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开房数据的更多相关文章
- CGI编程学习
@CGI编程学习 目录(?)[+] 一.基本原理 CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口.通过CGI接口,Web服务器就能 ...
- 吴裕雄--天生自然python学习笔记:Python CGI编程
什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户 ...
- Python学习笔记-CGI编程(如何在IIS上挂Python开发的Webservice)
一.如何用Python开发一个简单的Webservice 利用python的cgi编程,可以传入参数将结果输出. 定义需要编码以及需要引用的模块 #conding=utf-8 #修正中文乱码 impo ...
- (笔记)Linux下的简单CGI编程
为什么要进行CGI编程? 在HTML中,当客户填写了表单,并按下了发送(submit)按钮后,表单的内容被发送到了服务器端,一般的,这时就需要有一个服务器端脚本来对表单的内容进行一些处理,或者是把它 ...
- Linux CGI编程基础【整理】
Linux CGI编程基础 1.为什么使用CGI? 如前面所见,任何的HTML均是静态网页,它无法实现一些复杂的功能,而CGI可以为我们实现.如:a.列出服务器上某个目录中的文件,对目录中的文件进行操 ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- CGI编程
1简介 .CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口,服务器和客户端之间的通信,是客户端的浏览器和服务器端的http服务器之间 ...
- 多线程编程学习笔记——异步调用WCF服务
接上文 多线程编程学习笔记——使用异步IO 接上文 多线程编程学习笔记——编写一个异步的HTTP服务器和客户端 接上文 多线程编程学习笔记——异步操作数据库 本示例描述了如何创建一个WCF服务,并宿主 ...
- Python3 CGI编程
什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户 ...
随机推荐
- fragment 中利用spinner实现省市联动
(1)布局文件就不在说明了,主要说代码的实现,先把代码贴上! package com.example.cl; import android.annotation.SuppressLint; impor ...
- SQL Server 2008性能故障排查(一)——概论
原文:SQL Server 2008性能故障排查(一)--概论 备注:本人花了大量下班时间翻译,绝无抄袭,允许转载,但请注明出处.由于篇幅长,无法一篇博文全部说完,同时也没那么快全部翻译完,所以按章节 ...
- 【Java】实现一个根据日期判断星座程序的编写
思路 直接根据月份做索引,然后根据日期边界判断是本月的星座还是上月的. 算法 private static String getAstro(int month, int day) { String[] ...
- mac系统连接android电话
mac该系统不能连接android手机问题解决: 1.将电话 2.到场android手机vendor ID: 终端业务CMD: system_profiler SPUSBDataType 在列出的u ...
- java通过抛异常来返回提示信息
结论:如果把通过抛异常的方式得到提示信息,可以使用java.lang.Throwable中的构造函数: public Throwable(String message) { fillInStackTr ...
- backup mysql for xtrabackup with xbstream and lz4
极品暂时mysql加入一个实例,采用xtrabackup最简单的速度. 在现有数据节点上: /home/work/app/xtrabackup-2.2.3/innobackupex --ibbacku ...
- NSIS:制作软件升级安装包
原文 NSIS:制作软件升级安装包 相信不是每个人写的软件都只发布一次就可以了,肯定要有修改和维护的情况发生.在这种情况下,您可能就需要一个软件的升级安装包了. 现在,我们就来一步步把这个安装包做 ...
- (大数据工程师学习路径)第五步 MySQL参考手册中文版----MySQL数据库管理
一.MySQL权限管理 账户权限信息被存储在mysql数据库的user.db.host.tables_priv.columns_priv和procs_priv表中. GRANT和REVOKE语句所用的 ...
- paip.将数据导入到在英语语音数据库mysql道路解决空原则问题
paip.将数据导入到在英语语音数据库mysql道路解决空原则问题 #---原因:mysql 导入工具bug #---解决:不要使用双引号括注音. 笔者 老哇爪 Attilax 艾龙. EMAIL: ...
- 光流和KLT
一 光流 光流的概念是Gibson在1950年首先提出来的. 它是空间运动物体在观察成像平面上的像素运动的瞬时速度.是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存 ...