由于这三关只要会做图片马就可以过,没什么过滤,就放一起。
Pass-14
本关是要求我们上传图片马,包括png,jpg,gif三种类型的图片马,提示是检查文件头前两个字节内容,我们看一下源码内容来分析一下。


这里我就以vscode里的Hex Editor插件来打开三个类型的文件来查看一下文件头。先看GIF格式,因为这个最好记,文件头前6个字节数据“47 49 46 38 39 61”构成了gif文件格式头的开头文件。PNG格式文件是以开头8个字节的数据“89 50 4E 47 0D 0A 1A 0A”来标识的。而JPG是“4A 46 49 46”标识JPG格式的。



好的,知道了这些,就可以更好里就这一关的源码,将两个字节的数据都转为对应十进制数然后两个连一起,
|
十六进制 |
对应十进制数 |
|
47 49 |
71 73 |
|
89 50 |
137 80 |
|
FF D8 |
255 216 |
那么我们要怎么制作图片马呢,打开cmd,进入一个有木马文件和图片文件的文件夹,然后输入对应代码。
这里/b就是以二进制模式处理图片,/a是以文本模式处理文件,最终生成一个包含特殊代码的图片文件。


这里我们可以使用文本编辑器打开图片来看一下,里面会有我们写入的特殊代码

按照同样方法制作三种类型的图片马

上传之后,我们右键图片复制图片链接,点击那个文件包含漏洞。

http://localhost/upload-labs/include.php?file=upload/1620251014203704.png,upload后接复制的文件名

出现这个界面就是上传成功了。其他两个同理。

补充:如果觉得制作图片马麻烦,可以使用burp抓包修改,上传写好代码的php文件,添加GIF89a文件头,与Content-Type须有一行空格。然后就可以上传,后续步骤就和上面一样了。不过这个方法仅适用于GIF类型。

Pass-15
本关还是来看一下源码,理解一下源码。这里的getimagesize函数是 PHP 专门用于处理图片的工具,能返回图片的宽高、MIME 类型、图片类型代码等信息(仅对真实图片文件有效,非图片文件会返回 false)。后面的image_type_to_extention函数将 getimagesize 返回的图片类型代码($info[2])转换为对应的文件后缀(如 IMAGETYPE_JPEG 对应 .jpeg,IMAGETYPE_PNG 对应 .png)。

所以这里等于说没有上面限制,我们直接使用上一关的图片马就好。
Pass-16
本关是使用php_exif模块来进行文件类型检查,需要开启这个模块,但是还是只简单检查了文件后缀,没有做什么过滤,直接上传就好。


然后重启一下phpstudy,如果上传后发现一片空白,需要检查一下php.ini中extention=php_exif.dll这一行没有被注释,也就是去掉前面的分号;

解题点:
图片马制作。
1697



被折叠的 条评论
为什么被折叠?



