打开pay.php界面F12可以看见源代码
<!--~~~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=404asfdf&money=100000000
半天没动静,后来看网上才知道应该抓包修改Cookie的值,不然就不能认证为CUIT,这个在ATTENTION的第二行也有体现(所以总计是有三个条件)
这里将user的值从0改为1(0代表着false)
为了让password绕过数字验证,以下几种写法都可以:
404asdf(随便写) 404%20 404%00
然后就显示money的值太长了,有两种方法可以修改:
1.科学计数法
将money的值写为1e9 (注意这里要大于题目给的1e8)
但是为什么1e8不行呢?(明明可以转化啊)
2.数组绕过
因为提示的是字符串太长了,所以网上猜测可能采用strcmp()进行比大小,所以这里可以用数组绕过
strcmp():它会按照字节顺序对两个字符串进行比较,区分大小写。该函数常用于需要精确比较字符串内容的场景,比如验证用户输入的密码是否正确等
- 返回值:
- 如果
$str1
小于$str2
,返回一个小于 0 的整数。 - 如果
$str1
大于$str2
,返回一个大于 0 的整数。 - 如果
$str1
等于$str2
,返回 0。
- 如果
将money写为money[]=0(随便一个数),strcmp()在遇见数组和数比大小的时候会直接返回0,也就是这个数和数组相等
拿到flag