
一、前言最近刚入门 CTF Web 方向整理了一套高频基础考点包含git reflog源码泄露、JSON 传参漏洞、GET/POST 表单提交、HTTP 请求头伪造、HTTP 状态码、Burp Suite 激活与抓包使用覆盖新生赛 90% 基础题型适合新手收藏学习。二、Git 源码泄露考点git reflog 详解1. 什么是 git reflogreflog全称 reference log是本地仓库独有的引用移动日志保存在.git/logs目录不会同步到远程仓库。 记录所有 HEAD、分支的移动操作commit、reset、checkout、merge等哪怕提交被回退、删除、分支丢弃只要日志未过期默认 90 天垃圾回收都能找回丢失提交。2. 核心作用找回被删除 / 回退的 flag 提交CTF 常见场景开发者提交带 flag 文件后执行git reset --hard回退分支历史看不到 flag但 reflog 保留操作记录。 完整复现流程查看本地操作日志bash运行git reflog输出示例plaintexta1b2c3d HEAD{0}: reset: moving to HEAD-1 d4e5f6g HEAD{1}: commit: fixbug b7c8d9e HEAD{2}: commit: add secret # 含flag的提交 c3b2a1d HEAD{3}: commit: add file e1f2a3b HEAD{4}: commit (initial): init切换到丢失 flag 的历史快照bash运行# 方式1 git checkout b7c8d9e # 方式2推荐分离头指针 git switch --detach b7c8d9e读取 flag 文件bash运行cat flag.txt可选新建分支永久保存该提交防止日志过期丢失bash运行git switch -c recover_flag3. 关键注意点reflog仅本地存在git clone 远程仓库无法直接获取他人操作日志git reset --hard HEAD~1只会回退分支旧提交不会立刻删除由 reflog 保护 90 天区分git log与git refloglog 只显示当前分支可达提交reflog 记录所有历史移动。4. Git 常用命令速查表仓库初始化 远程表格命令功能git init初始化本地仓库git clone 仓库地址拉取远程代码git config --global user.name全局配置用户名git config --global user.email全局配置邮箱日常提交流程bash运行git add . # 全部文件加入暂存区 git commit -m 提交备注 git push origin 分支名 git pull origin 分支名分支管理bash运行git branch # 查看本地分支 git checkout -b test # 创建并切换分支 git merge test # 合并分支 git branch -D test # 强制删除分支回退 撤销CTF 高频bash运行git checkout -- 文件名 # 丢弃工作区修改 git reset --hard 提交id # 彻底回退丢弃所有改动慎用 git revert 提交id # 新增提交撤销操作不删除历史三、JSON 基础与 CTF 传参漏洞1. JSON 基础语法JSON 是轻量数据交换格式仅支持对象{}、数组[]、字符串、数字、布尔、nullkey 必须双引号包裹。 对象示例json{name:ctf,flag:nssctf{xxxx}}嵌套数组示例json{ list:[ {user:admin}, {user:guest} ] }2. CTF JSON 传参考点GET 传 JSON后端 PHP 经典漏洞代码php运行?php include (flag.php); $id$_POST[id]; $jsonjson_decode($_GET[json], true); if ($idwllnB $json[x]wlln) { echo $flag; } ?解题思路GET 参数传入 JSON 字符串URL 编码后访问 Payload 示例plaintext?json{x:wlln}配合 POST 提交idwllnB即可满足双重条件拿到 flag。四、HTML 表单提交原理GET/POST1. GET 表单完整示例html预览form actionlogin.php methodget input typetext nameusername_dfa9/ input typepassword namepasswd_3a9f/ input typesubmit value登录 /formaction数据提交后端处理地址methodget参数拼接在 URL 明文传输name属性是核心后端通过$_GET[name值]接收参数随机后缀是常见考点。GET 请求 URL 效果plaintexthttp://xxx/login.php?username_dfa9testpasswd_3a9f1234562. POST 表单区别参数放在请求体不暴露在 URL适合密码、大文件传输后端接收$_POST[参数名]HackBar/Burp 抓包可自定义 POST 数据发包。五、HTTP 请求头伪造CTF 高频考点1. 常见请求头与绕过场景表格请求头作用CTF 考点X-Forwarded-For(XFF)代理传递客户端 IPIP 限制绕过伪造 127.0.0.1 本地访问Referer请求来源页面来源校验绕过伪造谷歌 / 本站地址User-Agent浏览器标识UA 校验指定浏览器标识才能访问Cookie客户端会话存储Cookie 伪造、会话越权Content-Type请求体格式类型混淆、文件上传绕过2. 经典例题复现例题 1XFF 本地 IP 绕过页面提示禁止外网 IP仅本地管理员可访问 添加请求头plaintextX-Forwarded-For: 127.0.0.1例题 2XFFReferer 双重校验限制IP 必须123.123.123.123来源必须谷歌 完整请求头plaintextHost: xxx X-Forwarded-For: 123.123.123.123 Referer: https://www.google.com例题 3UA 浏览器校验页面提示仅 WLLM 浏览器可访问 修改 UA 头plaintextUser-Agent: WLLM3. Content-Type 分类application/x-www-form-urlencoded普通表单 POST 默认multipart/form-data文件上传application/json接口 JSON 传参text/xmlXXE 漏洞场景。六、HTTP 响应状态码速记状态码分类1xx信息响应2xx请求成功3xx重定向4xx客户端错误5xx服务器错误CTF 高频状态码表格状态码含义考点200请求成功正常拿 flag301/302重定向抓包查看跳转前隐藏 flag403禁止访问IP / 权限绕过404页面不存在目录扫描405请求方法不允许GET/POST 方法互换绕过500服务器报错报错信息泄露源码302 重定向考点页面自动跳转但 flag 藏在跳转前响应中使用curl -i或 Burp 抓完整响应包查看内容。七、Burp Suite 激活与基础抓包拦截使用1. 工具激活流程汉化破解版目录运行Start.bat/Start.VBS打开激活工具Burp 选择手动激活复制激活请求文本将请求粘贴至破解工具生成授权许可密钥复制密钥粘贴回 Burp完成激活可勾选汉化注意后续必须通过加载器启动否则激活失效。2. 核心功能请求拦截修改浏览器配置代理指向 Burp 端口开启拦截Intercept is on抓包后可任意修改GET/POST 参数、请求头XFF、Referer、UA、Cookie修改完成点击 Forward 放行请求查看页面返回结果。3. 配套小工具HackBar浏览器快速构造 GET/POST 请求无需抓包curl 命令快速发送请求查看完整响应头 响应体。八、学习总结Git reflog 是源码泄露类题核心记住查看日志、切换历史提交两步拿 flagHTTP 头伪造是 Web 签到题常客XFF、Referer、UA 三种伪造务必熟练GET/POST 表单分清参数传递位置URL 传 JSON、随机 name 参数是坑点Burp 作为 CTF 必备工具基础抓包改包是所有 Web 题操作基础遇到 302 跳转、403 禁止访问优先考虑请求头伪造绕过。九、拓展学习资源Git 可视化练习https://learngitbranching.js.org/Git 官方中文文档https://git-scm.com/book/zh/v2抓包可视化工具VSCode、Sourcetree、Burp SuiteCTF 基础题库NSSCTF、Bugku、攻防世界