原文:CGI编程学习----查询2000W开房数据

0x01:什么是CGI编程?

CGI:Common Gateway Interface

CGI代表Common Gateway Interface(通用网关界面),它使在网络服务器下运行外部分应用程序(或网关)成为可能。

CGI-BIN 目录是存放CGI脚本的地方。

这些脚本使WWW服务器和浏览器能运行外部程序,而无需启动另一个原因程序。

它是运行在Web服务器上的一个程序,并由来自于浏览者的输人触发。CGI是在HTTP服务器下运行外部程序(或网关)的一个接口,它能让网络用户访问远程系统上的使用类型程序,就好像他们在实际使用那些远程计算机一样。 CGI能够让浏览者与服务器进行交互,如果你曾经遇到过在网络上填表或者进行搜索,就很有可能就是用的CGI。

0x02:用什么语言可以编写CGI编程?

CGI应用程序可以由大多数的编程语言编写,如Perl(Practical Extraction and Report Language)、C\C++、Java 和Visual Basic等。不过对于那些没有太多编程经验的网页制作人来说,实在是一个不小的难题(测试CGI程序需要html测试文件)。

0x03:CGI应用程序的工作原理

1.浏览器通过HTML表单或超链接请求指上一个CGI应用程序的URL。

2.服务器收发到请求。

3.服务器执行指定所CGI应用程序。

4.CGI应用程序执行所需要的操作,通常是基于浏览者输人的内容。

5.CGI应用程序把结果格式化为网络服务器和浏览器能够理解的文档(通常是HTML网页)。

6.网络服务器把结果返回到浏览器中。

0x04:CGI程序实现

C语言实现代码:

 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>

 char from_hex(char ch)
 {
     ;
 }

 char * gb2312_to_chinese(char *gb2312)//将gb2312编码转换为汉字
 {
     if (strstr(gb2312, "%"))
     {
         );
         char *pstr = gb2312;
         char *pbuf = buf;
         while (*pstr)
         {
             if (*pstr == '%')
             {
                 ] && pstr[])
                 {
                     *pbuf++ = from_hex(pstr[]) <<  | from_hex(pstr[]);
                     pstr += ;
                 }
             }
             else if (*pstr == '+')
             {
                 *pbuf++ = ' ';
             }
             else
             {
                 *pbuf++ = *pstr;
             }
             pstr++;
         }
         *pbuf = '\0';
         return buf;
     }
 }

 void main()
 {
     printf("Content-type:text/html \n\n");//HTML语言
     ] = "";
     gets(searchstr);//从浏览器获得输入
     char *p = strchr(searchstr, '&');//处理从浏览器获取的输入,去掉多余的部分 searchstr[256] = "我们的输入&%ds%ads%fadsa8d8hd"
     if (p != NULL)
     {
         *p = '\0';
     }
     ;
     pstart = gb2312_to_chinese(pstart);//从浏览器获取到的输入是gb2312编码方式 需要转换成汉字 才能进行查找
     ;
     ] = "kaifang.txt";
     FILE *pfr = fopen(pathr, "r");//打开开房数据
     if (pfr == NULL)
     {
         puts("打开失败");
         return;
     }
     else
     {
         while (!feof(pfr))
         {
             ] = {  };
             fgets(buffer, , pfr);
             char *p = strstr(buffer, pstart);
             if (p != NULL)
             {
                 j++;//计数器
                 puts(buffer);
                 puts("<br><br>");//换行
             }
         }
         puts("<br><br>");//换行
         printf("找完了,找到 %d 个 %s ", j, pstart);
         puts("<br><br>");//换行
         puts("<br><br>");//换行
     }
 }

测试CGI程序所用的html文件:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 <title>酒店开房记录查询</title>
 <style>
     a:visited{color:#0000FF;}
     #div{width:600px;margin:0 auto};
 </style>
 </head>
 <body>
 <div id="div">
 <table style="line-height:1px;">
     <tr>
         <td>
             <p align="center"><img src="logo.gif" width="270" height="129" usemap="#mp"/></p>
         </td>
     </tr>
     <tr>
     <td>
     <p align="center">
 <form id = "form"  name = "form" method = "post" action = "http://127.0.0.1/cgi-bin/xxoo.cgi">
     <input type="text" name="searchstr" style="width:400px;height:30px;" placeholder="请输入你的那个他(她),看看有没有出轨"/>
     <input type="submit" name="sousuoanniu" value="猥琐一下" style="width:95px;height:35px;" />
 </p>
     </td>
     </tr>
         <tr>
  <tr>
  <tr>
  <tr>
         <td>
             <p align="center">
             <font size="2">酒店开放记录查询 已经总共2000万用户信息泄漏</font>

             </p>
             <br>
             <br>
  <br>
  <br>
  <br>
  <br>
  <br>
             <p align="center">
             <font  size="2">
                 友情提醒:数据来源于网络仅供参考,使用时请遵守当地法律法规

             </font>
             </p>
         </td>
     </tr>
 </table>
 </div>
 </body>
 </html>

0x05:测试效果

环境:Apache2.2,WIN8.1

找到Apache的安装目录将写好的CGI程序生成为.exe可执行程序,将后缀改为.cgi然后放在Apache 2.2\cgi-bin目录下

将测试CGI程序所用的html文件放在Apache 2.2\htdocs目录下

效果:

0x06:注意

printf("Content-type:text/html \n\n");//HTML语言
此行通过标准输出将字符串″Contenttype:text/plain/n/n″传送给Web服务器。它是一个MIME头信息,它告诉Web服务器随 后的输出是以纯ASCII文本的形式。请注意在这个头信息中有两个换行符,这是因为Web服务器需要在实际的文本信息开始之前先看见一个空行。

CGI编程学习----查询2000W开房数据的更多相关文章

  1. CGI编程学习

    @CGI编程学习 目录(?)[+] 一.基本原理 CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口.通过CGI接口,Web服务器就能 ...

  2. 吴裕雄--天生自然python学习笔记:Python CGI编程

    什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户 ...

  3. Python学习笔记-CGI编程(如何在IIS上挂Python开发的Webservice)

    一.如何用Python开发一个简单的Webservice 利用python的cgi编程,可以传入参数将结果输出. 定义需要编码以及需要引用的模块 #conding=utf-8 #修正中文乱码 impo ...

  4. (笔记)Linux下的简单CGI编程

    为什么要进行CGI编程?  在HTML中,当客户填写了表单,并按下了发送(submit)按钮后,表单的内容被发送到了服务器端,一般的,这时就需要有一个服务器端脚本来对表单的内容进行一些处理,或者是把它 ...

  5. Linux CGI编程基础【整理】

    Linux CGI编程基础 1.为什么使用CGI? 如前面所见,任何的HTML均是静态网页,它无法实现一些复杂的功能,而CGI可以为我们实现.如:a.列出服务器上某个目录中的文件,对目录中的文件进行操 ...

  6. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  7. CGI编程

    1简介 .CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口,服务器和客户端之间的通信,是客户端的浏览器和服务器端的http服务器之间 ...

  8. 多线程编程学习笔记——异步调用WCF服务

    接上文 多线程编程学习笔记——使用异步IO 接上文 多线程编程学习笔记——编写一个异步的HTTP服务器和客户端 接上文 多线程编程学习笔记——异步操作数据库 本示例描述了如何创建一个WCF服务,并宿主 ...

  9. Python3 CGI编程

    什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户 ...

随机推荐

  1. 父类中可继承方法在处理private的一个demo

    public abstract class AbstractParent { public AbstractParent() { System.out.println("Hello,pare ...

  2. nginx源代码分析--读请求主体(1)

    首先,读取请求体已进入HTTP要求11相,我们需要做的请求正文部分处理一些模块,所以这个模块需要注册功能在这个阶段,在阅读功能要求的身体ngx_http_read_client_request_bod ...

  3. 搞个这样的APP要多久? (转)

    这是一个“如有雷同,纯属巧合”的故事,外加一些废话,大家请勿对号入座.开始了…… 我有些尴尬地拿着水杯,正对面坐着来访的王总,他是在别处打拼的人,这几年据说收获颇丰,见移动互联网如火如荼,自然也想着要 ...

  4. Freemarker详细解释

    A概念 最经常使用的概念 1. scalars:存储单值 字符串:简单文本由单或双引號括起来. 数字:直接使用数值. 日期:通常从数据模型获得 布尔值:true或false,通常在<#if -& ...

  5. nmap 使用注意事项

    1.可行的网络主机的高速发现 nmap -sP 192.168.1.*  要么 nmap -sP 192.168.1.-254 2.扫描UDPport DP扫描方式用于推断UDPport的情况. 向目 ...

  6. socket-详细分析No buffer space available(转)

    新年上班第一天,突然遇到一个socket连接No buffer space available的问题,导致接口大面积调用(webservice,httpclient)失败的问题,重启服务器后又恢复了正 ...

  7. linux的自动化操作相关使用方法汇总(转)

    linux系统的web网站在运营状态时,我们常需要对网站进行维护,例如查看资源剩余并做出响应.日志分割.数据整理,在特定状态执行特定任务等等,这些都会需要linux能实现自动执行某些任任务.本篇博文介 ...

  8. SSH-Struts(两)—调节器(ActionServlet)

    第一部分介绍的博客Struts架构,下一节介绍中特定成分,这个博客是写Struts控制器ActionServlet. 扮演的角色 ActionServlet类是Struts的控制中心,全部来自于浏览器 ...

  9. Android GPS获取当前经纬度坐标

    APP中可能会遇到一种需求,就是将当前所在位置的坐标传到server上,今天我提供三种途径去获取经纬度坐标信息,第一种是通过Android API来实现,另外一种通过百度地图API来实现,第三种通过天 ...

  10. python2.7和 python3.4但是不要

    很多 Python 刚開始学习的人想知道他们应该从 Python 的哪个版本号開始学习.对于这个问题我的答案是 "你学习你喜欢的教程的版本号.然后检查他们之间的不同. " 可是假设 ...