相比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 | <!-- |
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。