php 秒杀 http响应,php HTTP响应拆分漏洞

HTTP请求的格式

1)请求信息:例如“Get /index.php HTTP/1.1”,请求index.php文件

2)表头:例如“Host: localhost”,表示服务器地址

3)空白行

4)信息正文

“请求信息”和“表头”都必须使用换行字符(CRLF)来结尾,空白行只能包含换行符,不可以有其他空格符。

下面例子发送HTTP请求给服务器www.yhsafe.com

GET /index.php HTTP/1.1↙        //请求信息

Host:www.yhsafe.com↙      //表头

↙                                                     //空格行

↙符号表示回车键,在空白行之后还要在按一个空格才会发送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 www.00aq.com 80

打开连接后输入

GET /index.php HTTP/1.1↙

Host:www.00aq.com↙

04b8e631aa4254234e01126b8696b601.png

返回HTTP响应的表头

69b48d725c7f22fb6e214e8ab2b4b6dd.png

返回的首页内容

使用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的值

实例:

// 打开Internet socket连接

$fp = fsockopen(www.00aq.com, 80);

// 写入HTTP请求表头

fputs($fp, “GET / HTTP/1.1rn”);

fputs($fp, “Host: www.00aq.comrnrn”);

// HTTP响应的字符串

$http_response = “”;

while (!feof($fp))

{

// 读取256位的HTTP响应字符串

$http_response .= fgets($fp, );

}

// 关闭Internet socket连接

fclose($fp);

// 显示HTTP响应信息

echo nl2br(htmlentities($http_response));

?>

b5c6c46286f6f1edc33f52d8ec6ef1a5.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值