upload-labs pass6-pass10
1.pass-6黑名单 空格绕过
直接上传肯定不可以
这个地方配置文件虽然只过滤了.htaccess,.user.ini也是不可用的,因为这里进行了重命名,通过代码审计可以发现空格没有过滤,这是利用windows的一个特性,后缀后面有空格和没有空格是一样的
burp抓包,改一下后缀名,添加一个空格
复制图片地址,访问,成功执行
2.pass-7黑名单 点绕过
通过代码审计可以发现.没有被过滤了,这也是利用了windows的一个特性
burp抓包,后缀加点
复制图片连接,访问
3.黑名单,::$DATA绕过
::$DATA是windows的特性
通过和上一题对比可以发现,可以用::$DATA绕过,注意文件名被重命名了
抓包改后缀
访问文件,成功执行
4.pass-9黑名单,点空格点绕过
这个地方要注意为什么和第8题源码是差不多的,只不过过滤::$data,而第8题却不能绕过,首先过滤空格和删除点的函数都是过滤一次的,当传入1.php. .,在第8题中遇到deldot,会删除.,剩下的1.php.%20,遇到strrchar,变量file_ext值为1.php,之后被重命名为20231456,而遇到trim被删除空格,最后变成了20231456.,只有一个点而没有后缀,不能被解析成php
为什么双写::
D
A
T
A
不能绕过
?
变量
f
i
l
e
n
a
m
e
值没有被过滤,是因为
f
i
l
e
e
x
t
用函数过滤的
,
而
f
i
l
e
n
a
m
e
值为
1.
p
h
p
:
:
DATA不能绕过? 变量file_name值没有被过滤,是因为file_ext用函数过滤的,而file_name值为 1.php::
DATA不能绕过?变量filename值没有被过滤,是因为fileext用函数过滤的,而filename值为1.php::DA::
D
A
T
A
T
A
w
i
n
d
o
w
s
文件上传时,文件命名是不能含有
:
w
i
n
d
o
w
s
会自动把
:
:
DATATA windows文件上传时,文件命名是不能含有: windows会自动把::
DATATAwindows文件上传时,文件命名是不能含有:windows会自动把::DATA去掉,但上面的不识别时不能被去掉的
抓包改后缀
访问文件
5.pass-10黑名单,双写绕过
通过审计代码可以发现是用了str_ireplace这个函数,这个函数只会过滤一次
抓包改后缀
访问