在p牛博客最近更新的文章,传送门,感觉很有意思,自己在自己本地测试了一下
0x01 正则表达式中的 ‘$’
apache这次解析漏洞的根本原因就是这个 $,正则表达式中,我们都知道$用来匹配字符串结尾位置,我们来看看菜鸟教程中对正则表达符$的解释:
匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,请使用 \$。
那么就明白了,在设置了 RegExp 对象的 Multiline 属性的条件下,$还会匹配到字符串结尾的换行符
0x02 Linux环境
这里本地是debian系的kali linux,apache配置文件路径在/etc/apache2/下,apache2.conf是apache核心配置文件,由于我本地php作为apache的mod方式运行的,所以需要在mods-enabled目录下找到关于apache-php模块的配置:
可以看见php7.0.conf是mods-available/php7.0.conf的软链接,配置如下:
SetHandler application/x-httpd-php
SetHandler application/x-httpd-php-source
# Deny access to raw php sources by defau