图片马
在图片中加入木马,然后上传让浏览器解析,达到上传木马的目的
制作图片马:可以在notepad++或者winhex中打开文件,在文件头中加入图片的文件头,再在文件末尾加入木马即可。
图片文件头如下:
1.Png图片文件包括8字节:89 50 4E 47 0D 0A 1A 0A。即为 .PNG。
2.Jpg图片文件包括2字节:FF D8。
3.Gif图片文件包括6字节:47 49 46 38 39|37 61 。即为 GIF89(7)a。
4.Bmp图片文件包括2字节:42 4D。即为 BM。
文件包含漏洞
实质:上传一段脚本,让服务端执行
包含:把可重复使用的函数写入到某个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数。
意义:攻击者可以通过修改文件的位置来让后台执行任意文件,从而导致文件包含漏洞。
pass-14
看题目环境,打开后看到提示说上传一个图片马,然后使用文件包含漏洞。
1.上传一个图片马并访问
2.使用文件包含漏洞
构造如下url然后访问即可
pass-15
1.上传图片马
getimagesize函数:对目标文件用16进制进行读取文件头的几个字符串是不是符合图片的要求,我们修改文件头为相应的
2.使用文件包含漏洞
pass-16
1.添加扩展(这个由于是自己搭的网站,会出现这种问题)
exif_imagetype()读取一个图像的第一个字节并检查其后缀名。需要在phpstudy的扩展种开启php.exif选项
Exif(Exchangeable image file format)是一种存储在JPEG和TIFF图像文件中的元数据,它包含有关图片的信息。PHP提供了一个名为Exif的扩展,可以方便地读取和处理这些信息
注意:php5.6以上的版本才能成功解析图片木马
2.上传图片马并构造包含的url
url格式为:include.php?file=upload
pass-17(二次渲染+图片马)
二次渲染:你上传的图片内容会被指令覆盖而生成或者改变成其他内容。
1.看源码
上传原本的图片马你会发现能成功上传,但是不能成功解析我们木马,查看源码,源码说会给图片进行二次渲染而生成新的图片
这里值得注意的是二次渲染并不是将所有部分都重新渲染,而是某部分被渲染
2.打开010编辑
将之前上传成功的图片另存,并将其与没有上传的图像进行比较,可以明显看出,我们的木马部分被二次渲染,因为只是渲染部分的缘故,我们将木马插入其中一个没有被渲染的地方(16进制),再进行上传。
3.使用文件包含漏洞,成功。
pass-18(条件竞争)
1.代码审计
这上面说:假如我们上传的是jpg,png,gif类的图,会先被保存到服务器(move_uploaded_file()函数),之后就会被重新命名。反之,unlink()函数会删除这个文件。总体流程是先上传,判断文件名(是否删除文件),再进行重命名和二次渲染。
2.利用条件竞争上传绕过
我们在清理文件时会经常遇到:你打开一个文件,然后再发现你不想要,你想把它删除了,发现删除不了,这是因为你打开的文件尚未关闭,因此删除不了。我们可以里利用这个原理,用bp在它上传之前就访问,就OK了,它的名字叫条件竞争上传绕过。
它的实际操作是:用bp抓包
pass-19(条件竞争+白名单+其他漏洞配合)
1.改源码(作者问题)
2.查看源码
服务器将文件与白名单比较,检查文件类型,大小以及此文件有没有被上传,上传后又要重命名——复杂。
3.看大佬
这关后面调线程,试不出来,有兴趣的试一下。
晚安這個未知的世界-CSDN博客
pass-20(后缀黑名单+函数特性)
1.源码和函数
打开环境,多了一个可以保存名称的框
move_uploaded_file()函数会忽略掉文件末尾的 /.
2.bp抓包
先上传一个PHP小马(修改后缀,不然传不上去),使用bp来抓包修改把后缀改为.php/.用蚁剑连接后即可
pass-21
略