进入题目后查看了一下源码没发现东西
查看发现了个menu的目录
点进去后发现了payflag
因为题目为buyflag,所以就可以认定flag在这里拿
因为是buyflag所以就需要进行抓包、改包
进入payflag页面后提示:
如果想要买flag,你必须是CUIT的学生,你必须回答正确的密码 只有CUIT的学生可以买flag
在抓包后发现cookie的user为0,所以直接将0改成1
随后回显你是cuiter,请输入你的密码
但是不知道,该怎么办
发现回显的下面有一串关于password的注释
<!--
~~~post money and password~~~
if (isset($_POST['password'])) {
$password = $_POST['password'];
if (is_numeric($password)) {
echo "password can't be number</br>";
}elseif ($password == 404) {
echo "Password Right!</br>";
}
}
-->
分析:
变量password使用POST进行传参,不难看出来,只要$password == 404为真,就可以绕过。函数is_numeric()判断其中的参数是数字还是其他,如果是数字则判断为真,否则为假。这里我选择传入的参数为404a (用hackbar传参)
上面也说了买flag需要100000000,所以POST传参
随后就会得到nember lenth is too long ,意思为money的长度太长
到这里没了什么思路,但是看到他的php版本后,问题就简单了
众所周知php5.3.3有一个漏洞,可以利用函数strcmp()进行绕过
所以得到一个payload
money[]=1000&password=404a
发包后得到flag