★★免责声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
0、环境准备
请移步《文件上传靶场实战:upload-labs第1-3关》
1、.号绕过原理
Windows系统下,文件后缀名最后一个点会被自动去除。 靶场实验:Pass-07
2、特殊符号绕过原理
Windows系统下,如果上传的文件名中test.php::$DATA会在服务器上生成一个test.php的文件,其中内容和所上传文件内容相同,并被解析。 靶场实验:Pass-08
3、路径拼接绕过原理
在没有对上传的文件进行重命名的情况下,用户可以自定义文件名并在服务器中上传新建,就会造成对应的绕过黑名单。
例如:用户新建 1.php.+空格+. deldot删除最后一个点之后,不再进行删除,trim删除空格,那么最终上传的文件名为 1.php.,利用Windows自动去除最后一个点,导致成功上传1.php。靶场实验:Pass-09
4、双写绕过原理
代码编写过程中,只对黑名单中的内容进行空替换,因为只替换一次所以造成双写绕过。str_ireplace() 函数替换字符串中的一些字符(不区分大小写)。靶场实验:Pass-10
str_ireplace() 函数必须遵循下列规则:
如果搜索的字符串是一个数组,那么它将返回一个数组。
如果搜索的字符串是一个数组,那么它将对数组中的每个元素进行查找和替换。
如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换
如果是对一个数组进行查找,但只对一个字符串进行替换,那么替代字符串将对所有查找到的值起作用。
注释:该函数不区分大小写。请使用 str_replace() 函数来执行区分大小写的搜索。
注释:该函数是二进制安全的。来源:https://www.runoob.com/php/func-string-str-replace.html
5、Pass-07
5.0、攻击思路
上传一句话木马的文件info.php
,打开Burp Suite拦截,在文件名后面加上点号【英文符号】,然后点Forward提交成功。
5.1、BurpSuite拦截
5.2、木马解析成功
回到文件上传页面,右击新标签页面打开,木马解析成功。
6、Pass-08
6.0、攻击思路
上传一句话木马的文件info.php
,打开Burp Suite拦截,在文件名后面加::$DATA
,然后点Forward提交成功。
6.1、BurpSuite拦截
6.2、木马解析成功
回到文件上传页面,右击新标签页面打开,需要手动删除路径中的::$DATA
,木马解析成功。
7、Pass-09
7.0、攻击思路
上传一句话木马的文件info.php
,打开Burp Suite拦截,在文件名后面加【.空格.】. .
,然后点Forward提交成功。
7.1、BurpSuite拦截
7.2、木马解析成功
回到文件上传页面,右击新标签页面打开,木马解析成功。
8、Pass-10
8.0、攻击思路
上传一句话木马的文件info.php
,打开Burp Suite拦截,在文件后缀名修改为双写.php-->.pphphp
,然后点Forward提交成功。
8.1、BurpSuite拦截
8.2、木马解析成功
回到文件上传页面,右击新标签页面打开,木马解析成功。
9、下期内容预告
下期继续分享文件上传进阶绕过技巧(三)和靶场实战,敬请关注我的公众号:大象只为你,持续更新中…