pass-01:
解题思路:(绕开前端js检测)
(1):F12 ,直接修改js 允许文件的上传类型 ,
(2):将webshell 文件后缀名改为允许上传的,然后用 burp suite 拦截后修改 文件后缀名 ,
(3):利用 浏览器插件 Noscrip 屏蔽js脚本
pass-02:
操作过程: 1,禁用了js 脚本依旧不能上传,猜测可能是 content-type 检测
解题思路:(Content-type 检测)
(1):将webshell 文件的后缀名改为图片类型 ,再利用 bs 抓包 修改文件后缀
(2):直接上传 webshell 文件 ,利用 bs 修改 Content-type :为 image/gif 绕过
pass-03:
操作过程:修改了webshall 的后缀名,再利用bs 修改成原来的后缀名没有上传成功,猜测服务器端也有文件后缀名检测
查看源代码发现有 文件后缀名的黑名单,以及大小写的过滤
解题思路:(服务端 拓展名检测 之 黑名单后缀名不全)
(1) , 用PHP 的别名进行黑名单绕过,如 php2, php3, php4, php5, phps, pht, phtm, phtml
.
(2), 重写文件解析规则绕过。上传先上传一个名为.htaccess
文件,内容如下:
<FilesMatch "1.jpg">
SetHandler application/x-httpd-php
</FilesMatch>
然后再上传一个 1.jpg 此时1.jpg 就会被当作 PHP来执行
pass-04:
操作过程:查看源代码 发现黑名单几乎过滤了全部的违法后缀名 ,但少过滤了 .htaccess 后缀
解题思路:(拓展名检测 之 绕过黑名单 之 后缀名缺少绕过)
(1),上传一个.htaccess 文件 重写 服务器的文件解析
创建一个.htaccess
文件
内容可以是 : AddType application/x-httpd-php .jpg
,可将jpg
文件解析为php
文件.
或者是 : SetHandler application/x-httpd-php
,可将其他所有文件解析为php
文件.
(2),利用PHP 和 Windows环境的叠加特性,以下符号在正则匹配时的相等性:
双引号" = 点号.
大于符号> = 问号?
小于符号< = 星号*
先把4.php文件后缀改为4.jpg 然后用bs 将文件名改为 4.php:.jpg
,上传成功后会生成4.php
的空文件,大小为0KB.
然后再在bs 中把文件名 改为4.<
或4.<<<
或4.>>>
或4.>><
后再次上传,重写4.php
文件内容,Webshell代码就会写入原来的4.php
空文件中。
pass-05:
操作过程: 查看源代码发现 黑名单里加上了 .htaccess 后缀 ,但是没有 进行大小写 过滤
解题思路:(拓展名检测 之 黑名单绕过 之 大小写绕过)
(1),可以利用 没有进行大小写 进行绕过 ,将1.php 改为 1.phP 上传
(在Linux没有特殊配置的情况下,这种情况只有win可以,因为win会忽略大小写)
(2)也可以用 pass-04 的(