解题步骤
首先观察打开的页面以及审查页面的原始代码,发现并没有什么特别的代码提示,然后我们点开页面中的菜单,出现了一个PAYFLAG
,推测与我们题解有关,故点开
点开后跳到了一个pay.php
的页面,我们使用 Burpsuite 抓包并分析出现页面的源代码,出现了几行可能与题解相关的代码提示以及一段 PHP 代码:
<!--
~~~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>";
}
}
-->
通过分析这些信息得,想要得到Flag
,必须满足以下两个条件:
- 以
Cuit's students
的身份访问 - 要
post money & password
两个参数,且必须POST
正确的password
,从php
代码中得,该password
还应该满足:不能为数字,但必须==404
这两个条件;而money
我们可以知道为 100000000
首先我们从HTTP得请求包中,可以看到Cookie: user=0
这个选项:
根据经验,我们将user=0
改为user=1
,并发出,得到回显:
说明我们满足了Cuit's students
这个条件,接下来,我们post money & password
这两个参数。关于money
我们提交money=100000000
,关于password
,由于其不能为纯数字,但要等于 404,我们可以考虑加入截断符号%00
或者空格%20
,但注意只能加在404后面,故我们提交password=404%00
,整个post
语句就为money=100000000&password=404%00
,查看回显页面:
出现了上述提示,说明password
正确的,但是money
所提交的数字太长了,这里我们用到科学计数法来缩短字符长度,将 100000000 变为 10e8
,修改后的post
语句就为money=10e8&password=404%00
,查看回显:
得到flag
,解题完毕