[极客大挑战 2019]BuyFlag

查看源代码,发现pay.php文件

 访问pay.php,并查看源代码

 注释提示以post的方式传递money和password参数

1 if (isset($_POST['password'])) {
2     $password = $_POST['password'];
3     if (is_numeric($password)) {
4         echo "password can't be number</br>";
5     }elseif ($password == 404) {
6         echo "Password Right!</br>";
7     }
8 }

代码中第3行判断password是否为数字,第5行判断password值是否为404

获取flag的条件如下:

使用burpsuite进行抓包,将password赋值404a绕过is_numeric(),money赋值100000000,然后发现请求包中Cookie为user=0,习惯性的将它改为user=1

 提示money数值太长,我们可以猜测后台使用的strcmp()进行比较,在5.3之前的php中,strcmp() 函数比较两个字符串,当传入的类型不是字符串类型,函数就会发生错误,返回return 0,这儿我们将money修改为数组类型便可绕过

原文地址:https://www.cnblogs.com/gtx690/p/13228820.html