分析源码及准备工作
这一关的源码相比较上一关多了getimagesize函数,对前一关修改前两个字节的方式进行了限制。
我们采用图片木马的方式绕过。
getimagesize 函数
getimagesize函数用于获取上传图片的信息,它的返回值是一个数组。
返回结果说明:(此处为转载,原文https://blog.csdn.net/CB_1213/article/details/88531274)
[ 0 ] 给出的是图像宽度的像素值
[ 1 ] 给出的是图像高度的像素值
[ 2 ] 给出的是图像的类型,返回的是数字,其中1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM
[ 3 ] 给出的是一个宽度和高度的字符串,可以直接用于 HTML 的 标签
[ bits ] 给出的是图像的每种颜色的位数,二进制格式
[ channels ] 给出的是图像的通道值,RGB 图像默认是 3
[ mime ] 给出的是图像的 MIME 信息,此信息可以用来在 HTTP Content-type 头信息中发送正确的信息,如: header(“Content-type: image/jpeg”);
生成图片木马
以jpg格式为例,png和gif同理
准备好一句话木马文件,和一张图片。将两者放到一个文件夹下。
在此处输入cmd后回车进入命令行。
输入命令合成图片木马。输入copy xxx.jpg/b + xxx.php/a 2xxx.jpg
其中xxx.jpg为原图片的名称,xxx.php为木马文件名称,2xxx.jpg为新合成文件名称。
回车后显示已复制 一个文件即为成功。
注:php文件要插在图片文件之后,否则靶场上传不成功
实验过程
生成图片木马后上传。右键→新建标签页打开图像。获得上传文件url
打开文件包含漏洞,对url拼接 进行包含(详见第十四关教程)
最后使用蚁剑连接