文件上传——黑名单验证绕过案例

文件上传——黑名单验证绕过案例

1.Pass-03(特殊后缀)

  进入提交界面,并查看提交php文件的反应

  可以看见在反馈中,禁止了相关后缀的文件上传,所以我们可以尝试采用特殊后缀进行上传。修改使用特殊后缀进行尝试:

  我们将提交的文件后缀改为了php4的形式,发现能够提交成功:

2.Pass-04(.htaccess)

  首先明确htaccess文件,它是超文本访问(Hypertext Access)的缩写,一个基于Apache的Web服务器使用的配置文件,用于控制它所在的目录以及该目录下的所有子目录。负责相关目录下的网页配置。通过htaccess文件,可以实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

  参考连接:https://blog.csdn.net/weixin_46329243/article/details/113091399

  查看提交结果界面:

  查看源码(当然,正常情况下我们是不可能有源码的):

  可以发现,这个禁止后缀禁止得很彻底,尝试htaccess方法,首先创建.htaccess并将其上传:

1
AddType application/x-httpd-php.jpg

  就是将jpg文件解释为php格式,最终能够上传成功(当然,这需要看Apache的相关配置的)

3.Pass-05(.user.ini)

  当禁用了.htaccess,提示显示上传目录存在php文件,所以我们可以尝试利用.user.ini的文件配置,其类似于.htaccess但是应用范围更广,只要是以fastcgi运行的php都可以用它来动态的局部修改php.ini中的配置

1
auto_prepend_file=liaoyue.gif

  该.user.ini文件里面的意思是:所有的php文件都自动包含1.gif文件。.user.ini相当于一个用户自定义的php.ini。然后再上传一个内容为php的脚本,命名为liaoyue.gif

  复制图像地址后,将文件名改为readme.php,然后密码设置为一句话的密码,蚁剑连接成功,最终上传成功。

4.Pass-06(大小写绕过)

  使用大小写也是一种绕过的方法,去除对文件后缀名的转为小写设定,直接选择后缀名为.PHP等非黑名单中存在的格式上传:

  (总感觉作用不大……)

5.Pass-07(空格绕过)

  选择后缀为.php的一句话上传,抓包后在后面增加空格,也是能够成功绕过。(这里需要在抓包工具中进行修改,我是没办法直接改文件名,系统会自动去掉空格)

6.Pass-08(点号绕过)

  选择后缀为.php的一句话上传,抓包后在后面增加点,达到成功绕过的目的。(这里需要在抓包工具中进行修改,我是没办法直接改文件名,系统会自动去掉点)

7.Pass-09(特殊字符::$DATA绕过)

  选择后缀为.php的一句话上传,抓包后在后面增加::$DATA,达到上传文件成功的目的。(这里需要在抓包工具中进行修改,我是没办法直接改文件名,系统不允许有::的存在)

8.Pass-10(针对去掉名称后面的.)

  查看源码:

  可以看见,在源码里,对上述的一些文件名黑名单绕过都赶尽杀绝,但是对于源码中其路径拼接的是$file_name而不是$file_ext,而$file_name是仅仅处理了文件名末尾的点。所以我们可以尝试在点后面在多加一个.

  选择后缀为.php的一句话上传,抓包后构造文件后缀为php. .,达到成功绕过的目的。

9.Pass-11(双写绕过)

  查看源码:

  查看后能够发现其对存在黑名单中的字符进行替换,但str_ireplace()函数只替换一次,因此修改文件名为1.pphphp就可以实现绕过


文件上传——黑名单验证绕过案例
https://one-null-pointer.github.io/2022/09/08/文件上传——黑名单验证绕过案例/
Author
liaoyue
Posted on
September 8, 2022
传送口