开卷看题
/web%E5%9F%BA%E7%A1%80$_POST/1.png)
跟上一道题一样,又是一道源码审计(doge)
分析源码
1 | $what=$_POST['what']; // 读取名为what的POST参数值 |
结论:当POST参数what的值等于flag时,输出答案
误入泥潭
这还不简单?看不起谁呢?BP截断发送repeater加参数一把梭不就OK了
/web%E5%9F%BA%E7%A1%80$_POST/2.png)
哈?我&(*%¥……&,发生了什么,为什么不能输出flag?????????
心想肯定是BP出问题了,要么就是服务器坏了,换maxhackbar试试
/web%E5%9F%BA%E7%A1%80$_POST/3.png)
这??为什么就成了?????
注意:maxhackbar发送POST包会自动添加GET参数;为了避免干扰,在截图的时候删除了多余的参数
发现曙光
既然maxhackbar可以成功,那就用BP抓一下流量康康吧
/web%E5%9F%BA%E7%A1%80$_POST/4.png)
仔细分析一下,草(两种植物),真是213了
说明一下:Content-Type(字母大小写严格遵循此名称)头表示MIME类型,如果没有指定则POST数据无效
参考:https://www.cnblogs.com/klb561/p/10090540.html
Content-Type在今后会有更多的用途,请各位仔细学习
再入战场
既然知道了坑在哪里,重新修改数据包
/web%E5%9F%BA%E7%A1%80$_POST/5.png)
发送数据包
/web%E5%9F%BA%E7%A1%80$_POST/6.png)
YES, 成功了,拿下flag
再入泥潭
兴高采烈的提交flag它却告诉我不正确,嗯?????
回头重新审视了一下,原来第一次输出的参数值和第二次的flag重叠了
突破天际
解决这个小问题之后,flag完美提交
总结和反思
总结
- 本题主要考察了$_POST超变量和POST请求
- POST请求忘记了添加Content-Type导致数据无法被正确解析
- 被一点小甜头冲昏了头脑
反思
- 扎实的基础很重要
- 保持冷静,仔细分析,不要遗漏线索