PHP代码审计通配符技巧
PHP代码审计通配符技巧
1 | <?php |
过滤了a-z0-9.
这些字符,那么思路就应该是考察linux的通配符的问题了,查了一下linux的通配符
- 通配符,代表任意字符(0到多个)
? - 通配符,代表一个字符
因此可以构造如下
$filename = '/????/???????/???/?????/?/*'
当然中间几个?可以用*来代替
,但是这样匹配的内容很很多
1 | system('/bin/ca? ~/flag'); |
另外要注意 cat本身命令是无法用?代替的,只能是绝对路径
/bin/cat