NovruzCTF - Terminal Writeup¶
题目信息¶
- 比赛: NovruzCTF
- 题目: Terminal
- 类别: Misc
- 难度: Medium
- 附件/URL:
nc 95.111.234.103 9999 - Flag格式: novruzCTF{}
- 状态: 已解
Flag¶
novruzctf{H1DD3N_F1L3S_4R3_N0T_S4F3_FR0M_Y0U}
解题过程¶
1. 初始侦察¶
连接后进入一个受限 shell 环境,以 guest 身份登录,需要提权到 root 才能获取 flag。
guest@ghost-server:/$ help
Commands:
ls [-a] : List files (use -a to see hidden)
cd <dir> : Change directory
cat <file>: Read file
pwd : Show path
auth <pwd>: Elevate to Root
getflag : Retrieve Flag (Root Only)
exit : Disconnect
关键命令:auth <pwd> 可以提权,getflag 需要 root 权限。目标是找到密码。
2. 文件系统探索¶
guest@ghost-server:/$ ls
var/ home/ readme.txt
guest@ghost-server:/$ cat readme.txt
SECURITY NOTICE:
We detected an intrusion.
All admin credentials have been moved to the backup folder in '/var/backups'.
Find them and secure the system.
线索指向 /var/backups 目录。
3. 发现隐藏文件¶
进入备份目录,常规 ls 只显示一个日志文件:
guest@ghost-server:/var/backups$ ls
sys_restore.log
guest@ghost-server:/var/backups$ cat sys_restore.log
[INFO] Backup started.
[INFO] Compressing data...
[WARN] .integrity_check file created (HIDDEN).
日志提示存在隐藏的 .integrity_check 文件。使用 ls -a 查看:
guest@ghost-server:/var/backups$ ls -a
sys_restore.log .integrity_check
guest@ghost-server:/var/backups$ cat .integrity_check
FAIL: Hash mismatch.
SAVED_CREDENTIAL_DUMP: q#9L!z@X_v2$mR
获得凭证:q#9L!z@X_v2$mR
4. 提权并获取 Flag¶
guest@ghost-server:/var/backups$ auth q#9L!z@X_v2$mR
[+] AUTHENTICATION SUCCESSFUL.
[+] WELCOME, ADMINISTRATOR.
root@ghost-server:/var/backups$ getflag
[***] SYSTEM UNLOCKED [***]
novruzctf{H1DD3N_F1L3S_4R3_N0T_S4F3_FR0M_Y0U}
攻击链/解题流程总结¶
cat readme.txt(线索指向/var/backups) → cat sys_restore.log(提示隐藏文件) → ls -a(发现.integrity_check) → cat .integrity_check(获取凭证) → auth提权 → getflag
漏洞分析 / 机制分析¶
根因¶
管理员将凭证明文存储在隐藏文件中,依赖"隐藏=安全"的错误假设。Linux 隐藏文件(以 . 开头)仅是不在默认 ls 输出中显示,不提供任何访问控制。
影响¶
- 任何有文件读取权限的用户都可以获取 root 凭证
- 完全的权限提升
修复建议¶
- 不要将凭证以明文形式存储在文件系统中
- 使用密钥管理系统(如 HashiCorp Vault)存储敏感凭证
- 对备份目录设置严格的文件权限(
chmod 700) - 隐藏文件不等于安全,需要 ACL 或加密保护
知识点¶
- Linux 隐藏文件机制(
.前缀,ls -a查看) - 受限 shell 环境的信息收集思路
- 日志文件中可能泄露敏感信息的线索
- "Security through obscurity" 的局限性
使用的工具¶
- netcat (
nc) — 连接远程服务 - 内置 shell 命令 (
ls -a,cat,cd) — 文件系统探索
脚本归档¶
- Go:
NovruzCTF_terminal.go - Python:
NovruzCTF_terminal.py
命令行提取关键数据(无 GUI)¶
# 一键自动化解题(expect 脚本风格)
{ echo "cd var/backups"; echo "cat .integrity_check"; sleep 1; echo "auth q#9L!z@X_v2\$mR"; sleep 1; echo "getflag"; } | nc 95.111.234.103 9999
推荐工具与优化解题流程¶
参考
CTF_TOOLS_EXTENSION_PLAN.md中的对应类别工具推荐。
工具对比总结¶
| 工具 | 适用阶段 | 本题耗时 | 优点 | 缺点 |
|---|---|---|---|---|
| 手动 nc 交互 | 全流程 | ~2 min | 直观,适合探索 | 无法自动化 |
| pwntools | 自动化交互 | ~1 min | 可编程、可重复 | 需要写脚本 |
| expect | 自动化交互 | ~1 min | 轻量 | 语法不够灵活 |
推荐流程¶
推荐流程:nc 手动探索 → 发现线索链 → 提权获取 flag(预估 2-3 分钟)。
手动 nc 交互(推荐)¶
- 安装:系统自带
- 详细步骤:
- 连接服务,
ls+cat readme.txt获取初始线索 - 进入
/var/backups,查看日志发现隐藏文件提示 ls -a找到隐藏文件,读取凭证auth提权后getflag- 优势:本题交互量小,手动最快
pwntools 自动化(可选)¶
- 安装:
pip install pwntools - 详细步骤:见脚本归档
- 优势:批量测试、自动化复现