upload-labs 15 源码:
通过自定义函数,判断文件内容是否是图片
源码分析:
1.先利用isset($_POST['submit'])
判断提交参数中是否有submit参数
2.定义名变量存储临时文件名$temp_file
3.调用自定义函数islmage()
来对上传文件内容进行判断,将$temp_file
临时文件名变量传入islimage()
函数。
PS:
①利用getimagesize()
函数来获取图像信息,函数返回结果为一个数组,里面存储这图像大小,类型等相关信息,失败会返回FALSE并产生一条告警错误信息。
其本质也是通过判断图片的前几个字节来识别图片类型。
②利用image_type_to_extension()
函数来获取后缀名
③利用stripos()函数来与上传文件后缀白名单字符串中的值作比较,如果查找成功,则返回对应字符索引值,当查找成功时,说明文件后缀在白名单中,随后islmage()
函数便返回存储着安全文件名后缀的
e
x
t
变量并赋值给
‘
ext变量并赋值给`
ext变量并赋值给‘res 4.利用$res变量来存储
islmage()`函数的返回结果,即存储着安全文件名后缀的
e
x
t
变量
5.
将
ext变量 5.将
ext变量5.将res变量带入判断,最终拼接到文件路径最后,作为文件名后缀。
绕过方式:文件包含图片马
通过伪造文件头或者图片马的方式进行绕过上传,最后用文件包含漏洞包含。
1.伪造文件头:GIF 89A
PS:
1.getimagesize()
函数:获取图像信息
2.image_type_to_extension()
函数:获取图像类型的⽂件后缀