攻防世界----ics-05

拿到靶场后,做一下目录扫描

1.访问 /start.sh

获得了网站的路径

2.访问/index.php/login

 拿到一个page的参数,因为page的内容是可以回显的因此尝试利用伪协议读取任意文件漏洞

?page=php://filter/read=convert.base64-encode/resource=index.php
?page=file:///var/www/html/index.php

两种方法都尝试,发现php伪协议成功拿到源码

将这一串源码拿去base64解密(因为我们读取源码采用了base64加密) 

对源码进行过滤,发现利用点

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();
    }

}

知识点1: xff伪造

就是在Host下面添加一条 X-Forwarded-For

如果不行的话说明位置不对,或者空格少了

 知识点2 preg_replace() /e 漏洞

preg_replace() 函数,该函数执行一个正则表达式的搜索和替换。

搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换。

参数说明:

  • $pattern: 要搜索的模式,可以是字符串或一个字符串数组。

  • $replacement: 用于替换的字符串或字符串数组。

  • $subject: 要搜索替换的目标字符串或字符串数组。

  • $limit: 可选,对于每个模式用于每个 subject 字符串的最大可替换次数。 默认是-1(无限制)。

  • $count: 可选,为替换执行的次数。

源码中

pat传入一个正则,rep传入命令执行的函数,sub需要和pat的正则进行匹配

/e 的原理就是 搜索 subject 中匹配 pattern 的部分, 以 replacement 进行替换,然后执行sub的内容

如图,命令被执行了

接下来就是常规的命令执行,找flag

 

 由于空格会导致字符失效,因此,利用+来替代空格(url中+就是空格)

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jjj34

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值