任务:
上传图片马到服务器
注意:
1.保证上传后的图片中仍然包含完整的一句话或webshell代码。
2.图片马要.jpg,.png,.gif三种后缀都上传成功才算过关
以gif格式为例上传
首先,查看gif部分源码
此处红线标记处,存在逻辑漏洞,
原本该代码是判断文件是否符合上传的,
但是在move_uploaded_file()作if条件,
该函数执行返回true时,不管文件是否符合都可以上传了。
不过本题真正想考的是对文件二次渲染绕过,
所以我们就忽视这个逻辑漏洞,继续做题。
我们制作一张图片马进行上传
上传文件后,发现网页本地目录中存在二次渲染后的图片
我们用HxD软件打开该二次渲染后的图片会发现我们插入的代码<?php phpinfo(); ?>已经消失了
显然,这样的图片马上传方式失败了。
不过二次渲染会保留一些文件内容不会改变,所以在制作图片马之前,我们先观察二次渲染前后图片不会改变的地方,将其代码写入其中即可绕过二次渲染
经对比,蓝色部分是二次渲染不会改变的部分。
于是,将代码写入
然后保存,重新进行上传。
在本地网页根目录中可以看到22279.gif
再用HxD软件打开
代码依然存在,没有被二次渲染掉。
文件绕过成功!