入门路径遍历(目录穿越)

726 字
4 分钟
入门路径遍历(目录穿越)

严格来讲,就单独的路径遍历的题目其实很少,往往是和其他漏洞一起实现的

原理:在文件路径中,../ 表示 在目录结构往上移动一级

例如,我们可以构造如此结构 /var/www/images/../../../etc/passwd

而这将使得最终结构回退到 /,也就是根目录

基本 payload#

URL payload#

../

..\(Windows特有

..;/

(这里的 ../ 可以使用超出原本路径的个数,原因是若是超出,则当前目录会自动保持在根目录)

Nginx 配置失误#

原理是 Nginx 配置的时候少打了个 /

例如:

location /files {
alias /home/user/data/;
}

这会导致若是在我们构造的 url 里面存在 /files,它会直接被映射到 /home/user/data/ 路径中

由此,我们便可以构造路径遍历 /files../../../etc/passwd

更正漏洞:在末尾加上 /,即 /files/

绕过方式#

双写绕过#

双写即可

例如:....//

绝对路径绕过#

直接使用绝对路径

例如:?filename=etc/passwd

限定目录绕过#

后端会对不同目录进行权限限定

我们可以通过 ~ 去访问根目录 / 下的目录

编码绕过#

核心就是后端在进行传参后会进行一些加密方式,这里我们在传参之前先使用该加密方式编码即可

列出一些常见的编码:

URL:../ 的一次 URL 编码为 %2E%2E%2F,二次 URL 编码为 %252E%252E%252F ..\ 的一次 URL 编码为 %2E%2E%5C,二次 URL 编码为 %252E%252E%255C

Unicode:\u002e

超长 UTF-8:\%e0%40%ae

UNC 绕过#

针对 Windows 系统

关于什么是 UNC 路径可以参考这篇文章

基本格式为 \\服务器名\共享目录名\路径\文件名

\\localhost\c$\windows\win.ini 中的 c$ 是 Windows 系统默认开启的管理共享(C盘是 c$,D盘是 d$),\windows\win.ini 则是具体的路径

%00截断绕过#

后端要求必须包含比如说 .jpg 等拓展名,这里我们构造 %00 去截断其后的拓展名即可

(文件上传还在追我)

这里构造的不仅仅为 %00,在类 UNIX 系统中,我们还可以尝试 %0A 去尝试绕过,以及 %20 等等

例如:?filename=../../../etc/passwd%00.jpg

这里注意:和文件上传类似,使用 POST 方法的话对参数也不会自动进行 URL 解码,需要我们先对 %00 进行解码处理

利用路径遍历上传 webshell 拿到权限(低#

由于路径遍历只能够进行 文件

所以首先系统得存在文件包含漏洞/文件上传漏洞等等可以执行命令的漏洞

我们先准备一个反弹 shell 脚本(shell.php

随后使用比如 SQL 注入将这个脚本写入到数据库中

随后切换目录,让服务器去下载这个文件并且给予文件执行的权限

这样,服务器上就躺着我们的 shell.php

随后我们开启监听,开始路径遍历

成功后拿到一个低权限 shell

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

入门路径遍历(目录穿越)
https://www.0n1y.org/posts/path/
作者
0n1y
发布于
2026-05-17
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
0n1y
炼就坚持仙蛊
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
7
分类
3
标签
3
总字数
17,176
运行时长
0
最后活动
0 天前

目录