本文最后更新于521 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
1.绝对路径
web网站有时候会采取目录遍历的防御措施,如过滤 ../ 上一级等关键字,然后简单的过滤通常会被绕过。有时候可以直接采用绝对路径,无须../返回上一级目录遍历:
filename=/etc/passwd

2.双写../绕过
有时候,防御措施是直接将 ../ 替换为空,可以直接采用双写/复写直接绕过:
filename=….//….//….///etc/passwd
....// => ../

3.URL编码绕过
可以采用URL编码来绕过服务器对 . 或者 / 的检测:
. => %2e
/ => %2f
% => %25 (双重URL编码)
先尝试编码 / ,失败:

全编码,失败:

双重编码,即将%编码,成功:
4.绝对路径配合../
有些web在获取filename图片文件的时候,会首先判断是否以一个固定的路径开头:

那么就可以配合../来返回上一级遍历任意文件:
filename=/var/www/images/../../../etc/passwd
5.截断文件后缀
某些web对filename的文件类型作了限制,只有当后缀为图片时才解析
这时候就可以利用 %00 来截断:
