web基础$_POST

开卷看题

跟上一道题一样,又是一道源码审计(doge)

分析源码

1
2
3
4
$what=$_POST['what']; // 读取名为what的POST参数值
echo $what; // 输出参数值
if($what=='flag') // 如果参数值等于"flag"则输出flag
echo 'flag{****}';

结论:当POST参数what的值等于flag时,输出答案

误入泥潭

这还不简单?看不起谁呢?BP截断发送repeater加参数一把梭不就OK了

哈?我&(*%¥……&,发生了什么,为什么不能输出flag?????????

心想肯定是BP出问题了,要么就是服务器坏了,换maxhackbar试试

这??为什么就成了?????

注意:maxhackbar发送POST包会自动添加GET参数;为了避免干扰,在截图的时候删除了多余的参数

发现曙光

既然maxhackbar可以成功,那就用BP抓一下流量康康吧

仔细分析一下,草(两种植物),真是213了


说明一下:Content-Type(字母大小写严格遵循此名称)头表示MIME类型,如果没有指定则POST数据无效

参考:https://www.cnblogs.com/klb561/p/10090540.html

Content-Type在今后会有更多的用途,请各位仔细学习

再入战场

既然知道了坑在哪里,重新修改数据包

发送数据包

YES, 成功了,拿下flag

再入泥潭

兴高采烈的提交flag它却告诉我不正确,嗯?????

回头重新审视了一下,原来第一次输出的参数值和第二次的flag重叠了

突破天际

解决这个小问题之后,flag完美提交

总结和反思

总结

  • 本题主要考察了$_POST超变量和POST请求
  • POST请求忘记了添加Content-Type导致数据无法被正确解析
  • 被一点小甜头冲昏了头脑

反思

  • 扎实的基础很重要
  • 保持冷静,仔细分析,不要遗漏线索