upload-labs-靶场(1-19关)通关攻略
文件上传漏洞是指由于程序员再开发时,未对用户上传的文件进行严格的验证和过滤,而导致用户可以上传可执行的动态脚本文件
Pass-01(前端验证绕过)
上传111.php文件,发现弹窗显示不允许,并给出白名单文件类型
方法一: 因为是前端拦截,所以删掉拦截代码,再尝试上传,发现上传成功
方法二:禁用前端JavaScript,尝试上传,上传成功
Pass-02 (Content-Type方式绕过)
上传.php用BP抓包,修改文件类型
之后放行,上传成功
Pass-03 (黑名单绕过)
查看源代码,找到黑名单里面的后缀
不上传黑名单里面的后缀,上传php3、php5、phtml等后缀的木马
上传成功
Pass-04 (.htaccess文件绕过)
上传.htaccess配置文件,.htaccess是apache的配置文件,在这个文件中配置我们上传的图片用php解析器解析
上传正常的图片后缀的木马
上传后成功访问
Pass-05(后缀大小写绕过)
上传大小写的php后缀,比如PhP,Php等等
访问成功
Pass-06(文件后缀(空)绕过)
文件名末尾添加空格,由于windows命名规范不允许文件名末尾出现空格,会被windows电脑自动删除。所以用BP抓包进行修改
放行后上传成功
Pass-07(文件后缀(点)绕过)
与第六关原理相同,文件名末尾添加圆点,由于windows命名规范不允许文件名末尾出现点,会被windows电脑自动删除。所以用BP抓包进行修改
Pass-08 ::$DATA(Windows文件流绕过)
在windows识别文件的时候,会把::$data当做文件流文件去识别
上传成功
Pass-09(构造文件后缀绕过)
点空格点绕过,去除文件名末尾的点,剩下点空格,收尾去空,剩下点。最终上传的木马名字是木马.php点,由于文件名末尾的点不符合windows的命名规范,所以上传成功以后只剩下木马.php
放行上传成功
Pass-10 (双写文件后缀绕过)
双写后缀绕过 ,遇到php会删除,那么双写,用pphphp后缀
上传成功
Pass-11(%00截断绕过(GET))
(GET) 直接在保存的文件名后面加%00,起到截断作用
放行上传成功
Pass-12(%00截断绕过(POST))
不同于上一关的是post的%00需要url解码
放行访问成功
Pass-13(图片马绕过)
图片马不能单独用,需要和文件包含漏洞组合用。
木马前添加GIF89a,在上传.jpg文件
用文件包含漏洞把图片马包含到页面上执行
Pass-14和Pass-15与Pass-13一样
Pass-16(二次渲染绕过)
上传图片
用文件包含漏洞把图片马包含到页面上执行
Pass-17 (条件竞争绕过)
上传能够输出木马文件的木马,然后上传了这个木马会在极短的时间内被删除,我们需要抓包一直爆破这个上传木马的数据包
同时一直访问 777.php,将得到 webshell.php木马文件
然后访问webshell.php,发现存在,并用蚁剑连接成功
Pass-18 (条件竞争 二 )
与Pass-17原理一样, 不同的是把php文件改成jpg文件上传,所以在jpg内写上输出木马到目录里面的代码,利用文件包含漏洞一直包含这个文件,只要包含到这个文件,这个jpg文件内的php代码就会被运行,木马文件webshell.php就会生成
Pass-19(move_uploaded_file()截断)
把jpg文件保存为php文件
/.绕过,文件名末尾的点会被删除,/会被当做路径