[极客大挑战 2019]BuyFlag wp

[极客大挑战 2019]BuyFlag wp


考察了strcmp()函数漏洞绕过方法

0/0知识点

这个函数是用于比较字符串的函数
int strcmp ( string $str1 , string $str2 )
参数 str1第一个字符串。str2第二个字符串。
如果 str1 小于 str2 返回 < 0;
如果 str1 大于 str2 返回 > 0;
如果两者相等,返回 0。

我们能用什么办法绕过验证呢
只要我们$_POST[’a’]是一个数组或者一个object即可

a[]=11111
即可使得上述代码绕过验证成功。

0/1解题

首先我们打开页面,点击右上角,跳转到pay.php
[极客大挑战 2019]BuyFlag wp
他告诉我们必须得到密码,其他什么也没有,那我们查看源代码看看
[极客大挑战 2019]BuyFlag wp
源代码中有一段php告诉我们需要post一个password=404但是不能是数字,和一个money=100000000,password不能是一个数,那么我么就在404后加一个字母a,试试
[极客大挑战 2019]BuyFlag wp
但是没有任何回显,那我们转个包看看
[极客大挑战 2019]BuyFlag wp
看到cookie那一行中user的值为0,把user=0改为user=1,再试试

[极客大挑战 2019]BuyFlag wp
他告诉我们,password对了,但是数字太长了,这里就利用了strcmp()函数漏洞绕过,如何绕过参考上面的知识点
[极客大挑战 2019]BuyFlag wp
ok,得到flag啦~