web第20题
[极客大挑战 2019]BuyFlag
打开靶场
无明显线索,直接审计源码
此处看到2个可疑页面
访问index.php就是主页面
访问pay.php
有一些提示,flag需要的金额,用户必须是cuit学生,密码必须正确,查看源码,在最后发现了这个
意思就是post提交一个password字段,然后判断是不是数字,如果不是就提示错误,然后判断是不是404,是就正确,那么应该是要进行绕过
先抓包观察
cookie中有user字段,发送到repeater模块进行修改观察返回,根据上方的提示,将user改为1(因为一般用户对应的字段不为0)进行尝试
得到提示,需要输入密码,再结合一开始的提示,需要money字段,值为100000000
直接在后面添加password字段,并且值要为404,且要绕过is_numeric检查
在这之前要注意一个问题,我们抓的包是GET方式,要将其修改为POST,并加上Content-type: application/x-www-form-urlencoded才会生效
先添加password字段
明显直接使用数字不行,要绕过is_numeric检查:php is_numeric绕过
这里使用%00绕过
成功绕过,然后添加money字段
提示数字的长度过长,使用科学计数法
得到flag
对于money字段,看了网上的wp,还有另外一种解法,由于判断了字符的长度,猜测使用了strcmp函数,可以利用此函数的漏洞:php strcmp()漏洞
使用数组进行绕过