- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PHP漏洞全解(八)-HTTP响应拆分
2012-04-12 15:59 DoDo DoDos Blog 我要评论(0) 字号: T | T
本文主要介绍针对PHP网站HTTP响应拆分,站在攻击者的角度,为你演示HTTP响应拆分。
AD:
HTTP请求的格式
1)请求信息:例如“Get /index.php HTTP/1.1”,请求index.php文件
2)表头:例如“Host: localhost”,表示服务器地址
3)空白行
4)信息正文
“请求信息”和“表头”都必须使用换行字符(CRLF)来结尾,空白行只能包含换行符,不可以有其他空格符。
下面例子发送HTTP请求给服务器
GET /index.php HTTP/1.1↙ //请求信息
Host:↙ //表头
↙ //空格行
↙
↙符号表示回车键,在空白行之后还要在按一个空格才会发送HTTP请求,HTTP请求的表头中只有Host表头是必要的饿,其余的HTTP表头则是根据HTTP请求的内容而定。
?
HTTP请求的方法
1)GET:请求响应
2)HEAD:与GET相同的响应,只要求响应表头
3)POST:发送数据给服务器处理,数据包含在HTTP信息正文中
4)PUT:上传文件
5)DELETE:删除文件
6)TRACE:追踪收到的请求
7)OPTIONS:返回服务器所支持的HTTP请求的方法
8)CONNECT:将HTTP请求的连接转换成透明的TCP/IP通道
?
HTTP响应的格式
服务器在处理完客户端所提出的HTTP请求后,会发送下列响应。
1)第一行是状态码
2)第二行开始是其他信息
状态码包含一个标识状态的数字和一个描述状态的单词。例如:
HTTP/1.1 200 OK
200是标识状态的是数字,OK则是描述状态的单词,这个状态码标识请求成功。
HTTP请求和响应的例子
打开cmd输入telnet,输入open 80
打开连接后输入
GET /index.php HTTP/1.1↙
Host:↙
↙
↙
返回HTTP响应的表头
返回的首页内容
使用PHP来发送HTTP请求
header函数可以用来发送HTTP请求和响应的表头
函数原型
void header(string string [, bool replace [, int http_response_code]])
string是HTTP表头的字符串
如果replace为TRUE,表示要用目前的表头替换之前相似的表头;如果replace为FALSE,表示要使用多个相似的表头,默认值为TRUE
http_response_code用来强制HTTP响应码使用http_response_code的值
实例:
?php?
//?打开Internet?socket连接?
$fp?=?fsockopen(,?80);?
//?写入HTTP请求表头?
fputs($fp,?GET?/?HTTP/1.1\r\n);?
fputs($fp,?Host:?\r\n\r\n);?
//?HTTP响应的字符串?
$http_response?=?;?
while?(!feof($fp))?
{?
//?读取256位的HTTP响应字符串?
$http_response?.=?fgets($fp,?);?
}?
//?关闭Internet?socket连接?
fclose($fp);?
//?显示HTTP响应信息?
echo?nl2br(htmlentities($http_response));?
??
HTTP响应拆分攻击
HTTP响应拆分是由于攻击者经过精心设计利用电子邮件或者链接,让目标用户利用一个请求产生两个响应,前一个响应是服务器的响应,而后一个则是攻击者设计的响应。此攻击之所以会发生,是因为WEB程序将使用者的数据置于HTTP响应表头中,这些使用者的数据是有攻击者精心设计的。
可能遭受HTTP请求响应拆分的函数包括以下几个:
header(); setcookie(); session_id(); setrawcookie();
HTTP响应拆分通常发生在:
Location表头:将使用者的数据写入重定向的URL地址内
Set-Cookie表头:将使用者的数据写入cookies内
实例:
?php?
????header(Location:??.?$_GET[page]);?
??
请求
GET /location.php?page= HTTP/1.1↙
Host: localhost↙
↙
返回
HTTP/1.1 302 Found
Date: Wed, 13 Jan 2010 03:44:24 GMT
Server: Apache/2.2.8 (Win32) PHP/5.2.6
X-Pow
您可能关注的文档
最近下载
- 教你如何破解软件OD破解软件OD使用教程.doc VIP
- 施工重大危险源辨识与防控措施月报表.pdf VIP
- 人教版(部编版)小学语文五年级上册 圆明园的毁灭第二课时 名师教学PPT课件.pptx VIP
- 一体机-柯尼卡美能达-bizhubC220说明书.pdf VIP
- BS EN 60079-32-2-2015 国外国际规范.pdf VIP
- 急诊科患者转运途中突然病情变化应急预案.pptx VIP
- G30连云港至霍尔果斯高速景家口至清水驿段扩容改造报告书.pdf VIP
- 股骨粗隆间骨折护理查房——护理问题及措施与健康指导.ppt VIP
- 零星工程 投标方案(技术方案).docx
- 一种比色法检测金黄色葡萄球菌活菌的Cu-MOF材料及其制备方法和应用.pdf VIP
文档评论(0)