updated:
BugkuCTF-Web(2)
一.题目如下:
法一.参考如下描述:
因此payload如下:
1 |
|
其实1337,6仍然是一个字符串,但在与数字比较时该字符串被类型转换为数字。根据笔者的实验,php将字符串转换为数字的方法是截取字符串中非数字字符之前的数字部分。因此password可以是ABC这样的格式,其中A是一个大于1336的数字,B是一个非数字字符,C任意。
关于字符串转数字的手册内容如下:
法二.利用比较运算符总认为数组大于数值的特性(存疑)
payload如下:
1 |
|
二.题目如下
法一.数组绕过,payload如下(这方法真没意思=-=)
1 |
|
题目中已经提示ereg函数存在%00截断的函数漏洞,即如果字符串中有%00出现,那么该函数在正则匹配时会自动舍弃%00及其后面的内容。然而出题人题目和答案不一样(害我浪费一个小时),根据网页的显示,字符串中应该含有*-*,因此payload如下(注意e代表科学记数法)
1 |
|
补充:ereg函数现已被舍弃,%00截断的漏洞除了在ereg函数上出现过,也在php5.2之前的版本url传参时出现。