[极客大挑战 2019]BuyFlag-3.23BUUCTF练习day5(3)
[极客大挑战 2019]BuyFlag-3.23BUUCTF练习day5(3)
打开发现一个menu
打开了一个买flag的页面,提示我们需要是CUIT的学生,那我们抓包看看
根据刚刚的提示,又在抓包页面看到user,其中0是代表false,那么我们将0改为1,应该可以满足是CUIT的学生
成功提示输入密码
刚刚翻看抓包返回的内容,看到了这个
代码解释
-
if (isset($_POST[‘password’])):
这行代码检查是否通过POST方法提交了名为password的表单字段。isset()函数用于检测变量是否已设置并且非null。$_POST是一个超全局数组,用于收集通过POST方法提交的表单数据$password = $_POST[‘password’];: -
如果password字段存在,将其值赋给变量$password
-
if (is_numeric($password)):
这行代码检查$password是否是一个数字。is_numeric()函数用于检测变量是否为数字或数字字符串。 -
echo “password can’t be number”;:
如果$password是数字,输出一条消息,提示密码不能是数字。 -
elseif ($password == 404):
如果$password不是数字,检查它是否等于404。 -
==是松散比较运算符,只比较值,不比较类型。
-
echo “Password Right!”;
如果$password等于404,输出一条消息,提示密码正确。
看代码知道密码该怎样得到了,在PHP弱比较中,如果是字符串与数字比较,那么在弱比较中字符串将会转换成数字,具体看这篇文章的拓展部分
所以我们只需要输入前面为404再加字符,可以绕过不是字符的检查和==弱比较
最后需要输入钱,没有给具体的变量名猜测是money
输入&money=100000000会显示过于长了,把数字位数变少可以采用科学计数法
得到flag{7d722fcf-06e2-4178-8c4c-8ab1e120068b}