题型解析
- 文件上传漏洞中后缀被限制
- 文件包含漏洞和文件上传漏洞结合利用
- php伪协议的运用
解题步骤
- 1. 打开界面发现是一个可以上传文件的页面
2. 这里上传一个包含一句话木马的shell.php文件,给出提示说只能上传PNG图片
3. 这里上传一个png文件上去发现出现的界面是uploads下的一个界面
因此猜测上传文件的位置是uploads,且文件被重命名了为imagekey的参数
通过抓包分析发现fp参数的值是upload,可以确认是向upload传递数据
4. 因此可以对fp参数尝试文件包含中的伪协议去读取home.php文件
利用php://filter/convert.base64-encode/resource=
php://filter(本都磁盘文件进行读取)
可以过滤出home.php文件的php源码
再将下面的base64编码解码发现存在一个include函数,对fp传递的值后加一个php的后缀
5. 因为只能上传png的格式文件,所以考虑利用图片码的方法进行文件上传,再配合文件包含漏洞常 用的phar://伪协议进行读取
- 1.将php文件先压缩成zip文件,在修改后缀为.zip.png
2. 上传图片马
3. 利用phar://伪协议进行文件包含
这个就是php解压缩报的一个函数,不管后缀是什么,都会当做压缩包来解压,用法: ?file=phar://压缩包/内部文件 phar://xxx.png/shell.php 注意 PHP>=5.3.0压缩包 需要是zip协议压缩, rar不行,将木马文件压缩后,改为其他任意格式的文件都可以正 常使用。步骤:写一个一句话木马shell。 php,然后用zip协议解压缩为shell.zip。然 后将后缀改为png等其他格式
4. 利用蚁剑进行连接
拿到flag
总结
遇到文件上传漏洞,如果有告诉文件存放的位置,那就可以想办法绕过后缀的限制。这题是白名单设置的只允许.png的格式,因此思路就是上传图片马,而要想利用图片马必须结合php伪协议进行本地文件包含访问,因此就要熟悉伪协议的用法了。