Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2392
  • 博文数量: 2
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 25
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-26 19:53
文章分类
文章存档

2014年(1)

2013年(1)

我的朋友
最近访客

分类: 其他平台

2014-06-06 17:21:22

注入工具的原理跟开发






“注入”这一词眼下可算得上时兴,“大巷冷巷”到处都能“听”到看到。这一词曾经让无数人“驰名色变”,今天我们的话题还是注入。不过今天我们这里的这个注入不同于以往的,它有别于通常的SQL注入,可以说是一种新型的。平日里,人们在提交数据的时候都是采用页面情势。但是,今天我们这里就要攻破这一传统观点。这种方法是通过自己构造HTTP请求报文,以程序的方式取代传统的方法,实现数据的主动提交。
在文章还未进入正题的时候,我就协定这个东西给大家再罗嗦两句。实在关于HTTP协议这个东西我原来都不想说的。然而,为了照料大多数友人。素日里,当我们在翻开一个网站的时候,比方说,实际上IE作为一个客户端,它将向服务器发送的是如下的请求报文:
GET / HTTP/1.1
Accept: image/gif, image/xxbitmap, image/jpeg, image/pjpeg, application/vnd.ms
powerpoint, application/vnd.msexcel, application/msword, application/xshockwaveflash, ./.
AcceptLanguage: zhcn
AcceptEncoding: gzip, deflate
UserAgent: Mozilla/4.0 (patible; MSIE 5.01; Windows NT 5.0)
Host:
Connection: KeepAlive
Cookie: NETEASE_SSNhinrof; NETEASE_ADV11 Province0; City0; NTES_UV_COOKIEYES
从以上的报文中,我们可以看到良多字段,不外其中有许多并不是必须的,如果我们自己编程,只关怀必要的就行了。在HTTP/1.1协议中划定了最小请求新闻由方法字段GET/POST/HEAD和主机字段HOST形成。如上面的
GET /HTTP/1.1
HOST:
但在HTTP/1.0中,HOST字段并不是必需的,至于这里为什么不能省,持续往下看。
GET和POST是阅读器向服务器提交报文通常所采用的两种方法。服务器在收到报文之后,解码剖析出所需的数据并进行处理,最后返回成果。通常我们可以看到的都是像.............../list.aspid...这样的URL请求,我们能够自己构造如下的报文来实现 。
GET /list.aspid... HTTP/1.1
HOST:...............
因为受URL长度1024的限度,所以GET方法通常是用在提交一些小数据的情形下。如果数据比拟大就只能采取POST方法。在讲授POST办法的一些要点之前,大家仍是先来看一段POST要求报文。

POST /huace/add.php HTTP/1.1
Accept: image/gif, image/xxbitmap, image/jpeg, image/pjpeg, application/vnd.ms
powerpoint, application/vnd.msexcel, application/msword, application/xshockwav
eflash, ./.
Referer: 202.147.125.36/huace/add.php
AcceptLanguage: zhcn
ContentType: application/xwwwformurlencoded
AcceptEncoding: gzip, deflate
UserAgent: Mozilla/4.0 (patible; MSIE 5.01; Windows NT 5.0)
Host: 202.147.125.36
ContentLength: 115
Connection: KeepAlive

nametest&email&efrom&homepage&icq&oicq&imagesay.gif&menttest&password&doaddB7A2CBCDC1F4D1D4
与GET方式比拟,在字段下面多了一段内容,这就是我们提交的数据,假如有中文须经由urlencode编码。同样让咱们省去不用要的字段,结构一个最小的POST恳求。
POST /huace/add.php HTTP/1.1
Host: 202.147.125.36
ContentType: application/xwwwformurlencoded
ContentLength: 115
nametest&email&efrom&homepage&icq&oicq&imagesay.gif&menttest&password&doaddB7A2CBCDC1F4D1D4
上面的ContentType字段表现为POST表单型的,ContentLength当然就是表示实体数据的长度了,这里都不能少,不然就无奈准确接收了。这样,服务器端处置页面就会收到提交的数据,并接收处理。
上面人不知鬼不觉的讲了一大堆对于客户真个货色,接下来看服务器方面。当报文数据达到服务器后,服务器底层过程进行吸收并放入特定的缓冲区,同时设置一些环境变量,如“CONTENT_LENGTH“、”QUERY_STRING“等,当然这其间还是屏蔽了一些底层细节的,如客户端提交的数据是怎么被重置到被请求页的尺度输入的,在此我们就不做过多的斟酌。之后高层利用程序如CGI、ASP、PHP等对其进行数据提取,其中CGI还须本人进行Unencode解码和字符串提取。如果向一个ASP程序提交数据,我提交了name和body字段,且采用POST表单方法提交,在ASP程序中应如下进行接受:
namerequest.form("name")

阅读(356) | 评论(0) | 转发(0) |
0

上一篇:WPS for Linux . 金山免费正版 Office 办公

下一篇:没有了

给主人留下些什么吧!~~