一、题目源码

<?php
highlight_file(__file__);
function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
echo curl_exec($ch);
curl_close($ch);
}
if(isset($_GET['url'])){
$url = $_GET['url'];
if(preg_match('/file\:\/\/|dict\:\/\/|\.\.\/|127.0.0.1|localhost/is', $url,$match))
{
die('No, No, No!');
}
curl($url);
}
if(isset($_GET['info'])){
phpinfo();
}
?>
二、测试ssrf

我们使用端口访问文件,可以看到有一个过滤条件,它限制了file,dict协议,127.0.0.1和localhost 也不能用,其实就是不想你探测内网端口,也不能读取内网服务文件。
但是!它可以通过phpinfo了条件,

给info随便赋一个值,出来了php界面,可以观察到hostname主机和端口,而172.21.0.3是可以绕过127.0.0.1这个条件,我们可以在这个地址上测试,不断的改变端口值,端口不一样,出来的值也会有所区别
当端口为6379的时候,没有任何区别

由于太多我们使用burpsuite去检测端口


只开放了一个80端口,也没有数据库

/search?url=http://172.17.0.1 # 无存活
/search?url=http://172.17.0.2 # 发现另一存活机器


这三台第一台就一个apache服务第三台是本机,那多半我们只能从第二台入手
我们可以使用我们的一个工具进行渗透,这个工具叫Gopherusr在github上面是开源的




