这一关上传图片进行了判断了后缀名、content-type,以及利用imagecreatefromgif判断是否为gif图片,
最后再做了一次二次渲染,但是后端二次渲染需要找到渲染后的图片里面没有发生变化的Hex地方,
添加一句话,通过文件包含漏洞执行一句话,使用蚁剑进行连接
补充知识:
二次渲染:后端重写文件内容
basename(path[,suffix]) ,没指定suffix则返回后缀名,有则不返回指定的后缀名
strrchr(string,char)函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
imagecreatefromgif():创建一块画布,并从 GIF 文件或 URL 地址载入一副图像
imagecreatefromjpeg():创建一块画布,并从 JPEG 文件或 URL 地址载入一副图像
imagecreatefrompng():创建一块画布,并从 PNG 文件或 URL 地址载入一副图像
这里有个小提示,对于做文件上传之二次渲染建议用GIF图片,相对于简单一点
GIF:
上传正常的GIF图片下载回显的图片,
用010Editor编辑器进行对比两个GIF图片内容,找到相同的地方(指的是上传前和上传后,两张图片的部分Hex仍然保持不变的位置)并插入PHP一句话,
上传带有PHP一句话木马的GIF图片
为了方便大家测试,这里提供一张网上某个大佬提供的GIF图片,当时我也找了很久,大家可以保存一下wwe.lanzoui.com/iFS
wwn53jaf
————————————————
PNG:
2.2 使用php脚本写入IDAT数据块:
1、创建一个IDAT_png.php(通过这个脚本生成一个绕过渲染的图片马):
脚本内容:
构造了一个一句话木马 长这样:
测试探针要传递的参数:
get传参0=assert 加上 post传参1=phpinfo();
这里还利用了文件包含
最后构造的pauload:
///http://192.168.48.110/upload-labs-master/include.php
?file=upload/12648.png & 0=assert
post参数: 1=phpinfo();
连接蚁剑传递参数:
get传参0=assert 加上 密码 = 1
///http://192.168.48.110/upload-labs-master/include.php?file=upload/12648.png & 0=assert
JPEG:
成功不了 摆了摆了 看别的啦s