#你真的会PHP吗
-一进页面,就是have fun,没什么实质性的内容,但有标题可以知道这是一道与PHP审计有关的题目。
-查看网页源代码,检查发现有一个hint,,暗示,应该就是我们解题的入手点吧
访问一下,果然hint里面有提示信息,让我们来看一下
![](http://ctf5.shiyanbar.com/web/PHP/6c525af4059b4fe7d8c33a.txt)
-可以看出需要我们给出一个数字,需要满足下面三个条件,,(这里有好多不认识的,百度百度再百度,,,)
1.不为空,且不能是一个数值型数字,包括小数。(由is_numeric函数判断)
2.不能是一个回文数。(is_palindrome_number判断)
3.该数的反转的整数值应该和它本身的整数值相等。即:
intval($req["number"])=intval(strrev($req["number"]))
-第二个条件与第三个条件看起来不可能同时成立
-第一个条件可以用%00空字符绕过检验
以下有两种方法
-1.利用intival 函数绕过
由上面知道是32位系统,由其的取值范围,我们使用-2147483648造成溢出,绕过
32位系统
-2.科学计数法构造number=0e-0%00
-感觉很难啊,参看了很多大神写的writeup,极其感谢白大神的友情帮助
网友评论