抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

相比GET传参报文,POST传参报文多的几个项:
1.GET转为POST
2.Content-Type:Content-Type: application/x-www-form-urlencoded
3.Content-Length: 86 这个86是POST传参的内容长度
4.Origin: http://175caf72-e921-4de9-aa37-2d213c9444ef.node4.buuoj.cn:81
5.Referer: http://175caf72-e921-4de9-aa37-2d213c9444ef.node4.buuoj.cn:81/?pleaseget=1
6.POST传参的内容
php中的strcmp漏洞
说明:
int strcmp ( string $str1 , string $str2 )
参数 str1第一个字符串。str2第二个字符串。如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。

可知,传入的期望类型是字符串类型的数据,但是如果我们传入非字符串类型的数据的时候,这个函数将会有怎么样的行为呢?实际上,当这个函数接受到了不符合的类型,这个函数将发生错误,但是在5.3之前的php中,显示了报错的警告信息后,将return 0。

在页面菜单可以看到有一个payflag页面。进去后提示我们的到flag的条件是要买falg并且要是一个学生还要输入一个密码。可以知道这是一个POST传参。

查看页面源代码可以看到一段注释了的代码。

1
2
3
4
5
6
7
8
9
10
11
<!--
~~~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>";
}
}
-->

isset()检验变量是否被设置。

is_numeric()检验的函数是否是纯数字,纯数字则返回True。

password==404这是一个弱比较,在Backupfile题中有提到。

然后使用了hackbar进行了POST数据写入发现并不行。继续burp suite抓包。

这里可以看到Cookie有user,将后面数据改为1,发送后返回

说明我们做的是正确的。

然后再进行GET改POST,并加入password和money。

这里并不能直接输入正常的数字,他会提示你数据过长。除了这样输入数据外,还可以money[]=1这样也可以得到flag。

还有就是再GET请求改为POST请求时,是不能直接将GET改为POST就可以的,他需要添加几行报文。

之后就可以得到flag。

评论