文件上传upload-labs第十一至十九关

第十一关

白名单,get类型%00截断(需要两个条件:php版本小于5.3.4;php的magic_quotes_gpc为OFF状态)

  1. 另save_path等于下面的值:…/upload/4.php%00
    BP修改一下抓到的包
    在这里插入图片描述

第十二关

POST类型%00截断绕过上传

这关报错的路径在post参数里 可以直接00截断绕过 ,唯一不同的是post中内容不会给你直接url编码,所以我们需要改一下hex,需要在二进制中进行修改,因为post不会像get对%00进行自动解码。00截断版本只限于5.3之前
文件上传upload-labs第十一至十九关_第1张图片

第十三关

上传图片马
代码中检测了文件头的2字节内容,也就是说我们只需要将文件的头两个字节修改为图片的格式就可以绕过,通常 JPEG/JPG: FF D8 , PNG:89 50,GIF:47 49
使用Brup抓包,然后发送到Repeater模块。

将HEX编码 3131 改为 FFD8 点Go后成功上传JPG。

文件上传upload-labs第十一至十九关_第2张图片

第十四关

类似上一关
但是在PHP 7 版本中不能保证其能够正常的拿Shell。
十五十六关仍然是图片马

第十七关

条件竞争

代码审计一波,发现有unlink() 函数,此函数是删除文件的作用,

这里先将文件保存在服务器中,再判断后缀名,若后缀名不合法则删除文件

通过条件竞争的方式在unlink之前,访问上传文件。

利用条件竞争删除文件时间差绕过。

上传一个含有phpinfo()函数的php文件试试,然后burp抓包
文件上传upload-labs第十一至十九关_第3张图片

第十八关

解题思路

对文件后缀名做了白名单判断,然后检查文件大小、文件是否存在等等。
将文件上传后,对文件重新命名,同样存在条件竞争的漏洞。

初始文件命名规则$this->cls_upload_dir . t h i s − > c l s f i l e n a m e , 重 命 名 规 则 this->cls_filename,重命名规则 this>clsfilenamethis->cls_upload_dir . $this->cls_file_rename_to,当大量文件需要被重命名时就会出现条件竞争

move在rename之前,move操作进行了一次文件保存, 然后rename进行了一次更改文件名。
利用burp不间断地发送上传图片马的数据包,由于条件竞争,程序会出现来不及rename的问题,从而上传成功。
查看配置mime.types,这里记录着可被Apache服务器所识别的文件属性:

#application/x-7z-compressed 7z

7z后缀并不被Apache服务器所识别,却在上传文件名后缀的白名单中,可以利用Apache的解析漏洞将上传的7z后缀文件当做php文件解析。
Apache的解析漏洞

Apache服务器在解析多后缀文件名的文件时,会从后往前辨别后缀,一直辨别到可以解析的后缀。

利用burp不停发包方法同上题

浏览器一直刷新访问上传的文件名

或者上传的图片马

第十九关

黑名单策略,文件名用户可控
提示与查看源码

本pass的取文件名通过$_POST来获取。

名单策略,文件名用户可控,文件命名info.php.绕过

上传info.php文件,保存名称改为info.php.绕过黑名单
文件上传upload-labs第十一至十九关_第4张图片
上传成功

你可能感兴趣的:(文件上传upload-labs第十一至十九关)