[XCTF 4th] ics-05 复现
0x00 前言
这道题目难度不是很大,涉及到了文件包含漏洞以及pre_replace()
函数存在的php代码注入漏洞.
preg_replace()函数的作用是对字符串进行正则处理。
当第一个参数存在/e修饰符的时候,$replacement参数的值会被当做php代码来执行
0x01 解题
- 进入题目环境,随便看看,只有'设备维护中心'可以点开,进入页面,没有任何有效的信息,右键查看源代码发现也没有提示.
- 尝试扫描后台,看看是否可以得到有用的信息.
- 发现'index.php/login/',尝试进入页面.
- 发现一个链接'云平台设备维护中心',进入页面.
- 发现url关键参数'page',可能有经验的小伙伴知道,url出现'file','page'等参数的时候很可能是文件包含漏洞,所以并且在页面中还有page=index的回显,所以尝试传递page=1,观察有什么效果.
- 果然1在页面中回显了,所以直接尝试使用php伪协议来读取index的源码:[?page=php://filter//read=convert.base64-encode/resource=index.php]
- 得到了index.php经过base64编码之后的源码,经过bp解码之后的源代码有一部分很关键:
- 代码意思很明确了,要求xff头必须是127.0.0.1,并且preg_replace()函数的三个参数我们都可控,那么就可以利用这个函数的来造成php代码的任意执行.
- 查看当前目录下的文件
- 发现可疑文件's3chahahaDir',进入该目录并查看当前目录下的文件
- 发现flag文件夹,进入该文件夹并查看该目录下的文件
- 查看flag.php,拿到flag