ez_php_jail
首先启动靶机并访问。上来就能看到源码
1 | |
很明显要我们利用eval危险函数来进行命令执行。
首先看到这个传参$Jail = $_GET[‘Jail_by.Happy’];,很明显是PHP GET传参特性
当 php 版本⼩于 8 时,GET 请求的参数名含有 . ,会被转为 _ ,但是如果参数名中有 [ ,这
个 [ 会被直接转为 _ ,但是后⾯如果有 . ,这个 . 就不会被转为 _ 。
1 | |
然后要经过一次正则过滤,
1 | |
查看源代码,发现提示我们访问一个文件ph0_info_Like_jail.php
访问之后发现是一个phpinfo页面,里面我们能看到禁用了很多函数
1 | |
发现没有过滤highlight_file函数,完美绕过正则和禁用函数
payload:
1 | |
这里用到了glob函数
知识点
glob函数
- 这是 PHP 中的函数调用,用于查找文件。
glob是一个标准的 PHP 函数,接受一个模式作为参数,并返回匹配该模式的文件路径。
用法:
- 返回值是一个数组,其中包含所有符合条件的文件名。如果找到了符合条件的文件,
glob()会列出这些文件。
例如:
1 | |
"/f*"表示在根目录下查找所有以f开头的文件和目录。
glob(“/f*”)[0]表示数组中第0位的文件名
glob伪协议
glob伪协议通常用于以特定的语法描述如何查找匹配方式的文件,利用通配符(例如*和?)来指定文件名模式。通配符
:
*表示零个或多个字符。?表示单个字符。
伪协议格式:可以考虑一种类似于
glob:///path/to/files/*.txt的格式,这表示在指定目录下查找所有以.txt结尾的文件。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。