第二关在不看源码的情况下,可以事先准备几种不同文档格式的webshell,我这里均为
<? phpinfo(); ?>刚开始时啥也不知道主打一个尝试,将常用的几种带入尝试,如下我尝试了3遍就成功上传了,上传后只需要在burp中将文档后缀改为php网站就可以成功解析了。
当尝试不出来时再尝试爆破也不迟。
一个能上传的文件删去content type以及后面的mine type文件就不能上传了说明这个是起决定性因素的。反之则是filename=’ 中的文件后缀起决定性’。
Content-Type起决定性的时候filename=’’中后缀改为与脚本语言匹配的就行。
本关可以传一个php后缀的文件抓包,在抓到的包里将Content-Type改为符合要求的也可以上传
还是尝试,发现黑名单,我们使用不在黑名单的后缀文件上传
这里上传的是gif后缀,但其实是一个php文件,抓包将gif修改为php会发现任然无法上传,因为他禁止PHP这时候我们可以尝试php的其它版本。例如php3,php5等(当你要解析的文件脚本语言确定时无法上传时可以尝试其它版本,例如这里我上传的php脚本语言,我的后缀只能是php,但php被禁止了,此时我可以尝试其它的版本)上传文件的名字可能会被加密等等,访问地址以响应包里的地址为主这里访问到的是空白的,没有显示代码证明代码没有错误,之所以是空白是因为我们并未在apache内部进行对应危险的配置,要在apache配置文件中添加对应的php版本才可以解析
为.htaccess绕过先上传一个.htaccess后缀的文档,在里面写上下面的代码。
<FilesMatch “1.jpg”>
SetHandler application/x-httpd-php
再上传一个1.jpg格式的后缀文件写上自己的webshell
我的理解
因为<FilesMatch “1.jpg”>所以上传一个1.jpg格式的后缀文件
这里出了毛病应该是靶场上了年纪,新版本不太行要切换老版本
点空点绕过,在php后加上. .
大小写绕过
windows 对文件名大小写不敏感例如 test.txt与TEST.txt是一个文件,而linux则不同。通过访问只有大小写不同的网站如果访问到相同的网站则为windows
后缀加空格绕过
点绕过
文件流特性绕过
如果后缀名没有对::
D
A
T
A
进行判断,利用
w
i
n
d
o
w
s
系统
N
T
F
S
特征可以绕过上传在
w
i
n
d
o
w
的时候如果文件名
+
"
:
:
DATA进行判断,利用windows系统NTFS特征可以绕过上传 在window的时候如果文件名+"::
DATA进行判断,利用windows系统NTFS特征可以绕过上传在window的时候如果文件名+"::DATA"会把::
D
A
T
A
之后的数据当成文件流处理
,
不会检测后缀名,且保持
:
:
DATA之后的数据当成文件流处理,不会检测后缀名,且保持::
DATA之后的数据当成文件流处理,不会检测后缀名,且保持::DATA之前的文件名,其实和空格绕过点绕过类似
这里出毛病了,不知道为啥
. .绕过(点空点绕过)与上面有一关相同
这里偷个懒