题目:[极客大挑战 2019]BuyFlag 1
一、Web题先抓个包
在响应包(回包)中发现一个pay.php跟题目BuyFlag很像,因此优先考虑进入这个页面看看(复盘的时候发现就在右侧菜单的PAYFLAG中...)
二、改包
进入这个页面之后,提示说如果要payflag首先需要是个向它证明自己是个student,然后回复正确的password,最后用100000000支付flag(真贵,可恶!)
在响应包中发现是通过POST请求访问的,同时password需要为404且由于设置了is_numeric函数,需要利用password=404a,由于PHP中=是弱等于,则需要添加随机字母才能使得参数等于数字
在改包时发现请求包中COOKIE的值是user=0,根据经验可以发现这就是上述的student身份证明,0表示错误(不是),所以改为1就是正确的,那么最后改包的结果为:
但是人家说数字长度太长
好办,直接改为科学计数法money=1e9去实现,OK拿下
总结:这种Web题一定要会抓包,能通过题目中给出的信息找到关键依据,还需要一定的联想能力(做题经验),这道题后面还有个小知识点:最后字符长度的设置是利用了strcmp函数,这个函数比较的是字符串类型,如果强行传入其他类型参数,会出错,出错后返回值0,正是利用这点进行绕过。因此最后也可以通过构造money[]=1进行绕过也是常用方法!!