[XCTF 4th] ics-05 复现

0x00 前言

这道题目难度不是很大,涉及到了文件包含漏洞以及pre_replace()
函数存在的php代码注入漏洞.

preg_replace()函数的作用是对字符串进行正则处理。
当第一个参数存在/e修饰符的时候,$replacement参数的值会被当做php代码来执行


0x01 解题

  1. 进入题目环境,随便看看,只有'设备维护中心'可以点开,进入页面,没有任何有效的信息,右键查看源代码发现也没有提示.
  2. 尝试扫描后台,看看是否可以得到有用的信息.
  3. 发现'index.php/login/',尝试进入页面.
  4. 发现一个链接'云平台设备维护中心',进入页面.
  5. 发现url关键参数'page',可能有经验的小伙伴知道,url出现'file','page'等参数的时候很可能是文件包含漏洞,所以并且在页面中还有page=index的回显,所以尝试传递page=1,观察有什么效果.
  6. 果然1在页面中回显了,所以直接尝试使用php伪协议来读取index的源码:[?page=php://filter//read=convert.base64-encode/resource=index.php]
  7. 得到了index.php经过base64编码之后的源码,经过bp解码之后的源代码有一部分很关键:
  8. 代码意思很明确了,要求xff头必须是127.0.0.1,并且preg_replace()函数的三个参数我们都可控,那么就可以利用这个函数的来造成php代码的任意执行.
  9. 查看当前目录下的文件
  10. 发现可疑文件's3chahahaDir',进入该目录并查看当前目录下的文件
  11. 发现flag文件夹,进入该文件夹并查看该目录下的文件
  12. 查看flag.php,拿到flag
原文地址:https://www.cnblogs.com/hello-there/p/12849904.html