CTFshow-Web-RCE远程代码执行

一、靶场:ctfshow web12
二、解题步骤:
步骤一:打开靶场后,发现页面中什么输入框都没有,url也没有什么可以利用的点,所以看一下源码,发下有提示:?cmd=

image1

image2

步骤二:尝试url拼接:?cmd=phpinfo(); 发现执行有回显,猜测源码中存在:eval($_GET["cmd"])

image3

步骤三:使用highlight_file()函数对当前文件中代码进行高亮处理,即:?cmd=highlight_file("index.php")

image4

可以看到源码中的内容与猜测相符

步骤四:使用 glob() 函数获取当前目录下的所有文件名

注解:glob(pattern,flags):函数返回匹配指定模式的文件名或目录。

参数 描述
pattern 必需。规定检索模式。
flags

可选。规定特殊的设定。

可能的值:

  • GLOB_MARK - 在每个返回的项目中加一个斜线

  • GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)

  • GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式

  • GLOB_NOESCAPE - 反斜线不转义元字符

  • GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b' 或 'c'

  • GLOB_ONLYDIR - 仅返回与模式匹配的目录项

  • GLOB_ERR - (PHP 5.1 新增的)如果错误则停止,默认情况下忽略所有错误

实例:

glob("*") 匹配任意文件

glob("*.txt")匹配以txt为后缀的文件

glob(".")匹配文件名含有 . 的所有文件

拼接payload:?cmd=print_r(glob("*")); 查看当前目录下的所有文件,发现除了当前文件还有一个文件,使用前面的方法读取该文件的内容

image5

步骤五:读取当前目录下的另一个文件内容,得到flag

image6

posted @ 2025-12-03 09:33  shinianyunyan  阅读(14)  评论(0)    收藏  举报