进入靶场后,进行一波浏览,没有什么功能点,在MENU下有PAYFLAG,点击后有新页面pay.php
页面下方有提示,You must be a student from CUIT ,You must be answer the correct password
右键查看页面源代码,存在提示,money和password需要通过POST的方式进行传参。密码为404时返回密码正确,此时知道了密码,先进行抓包尝试。
抓包重发后,提示只有cuit的学生能访问,看到cookie中有user=0,改为user=1尝试一下
用户正确了,但是密码404并没有正确,查询源代码中用来传输密码的函数is_numeric的用法,得知需要数字+字符才返回为真
尝试password=404a,发现口令还是错误,排查后发现未用POST方法传参,使用POST方法传参后口令正确。提示需要购买flag,在参数后加上money=100000000
提示字符过长,这里查看了php版本为5.3.3,就用到strcmp()函数绕过,在PHP5.3之前,传入数据的类型为字符串类型,当传入的类型不是字符串类型,函数就会发生错误,显示报错信息后会return 0,即传入的如果不是字符串即会报错,从而实现绕过。
即如果传入的如果是password[]=1即以数组传入特点,就会产生爆错,但返回的仍然是假,即0,从而实现了绕过
此处参考https://blog.dandelioncloud.cn/article/details/1594146531932557314
进行一波尝试,flag到手