当前位置: 首页 > news >正文

CTF 入门必备基础:Git、JSON、HTTP 请求头、BP 抓包全知识点整理

一、前言

最近刚入门 CTF Web 方向,整理了一套高频基础考点,包含git reflog源码泄露、JSON 传参漏洞、GET/POST 表单提交、HTTP 请求头伪造、HTTP 状态码、Burp Suite 激活与抓包使用,覆盖新生赛 90% 基础题型,适合新手收藏学习。

二、Git 源码泄露考点:git reflog 详解

1. 什么是 git reflog

reflog全称 reference log,是本地仓库独有的引用移动日志,保存在.git/logs目录,不会同步到远程仓库。 记录所有 HEAD、分支的移动操作:commitresetcheckoutmerge等,哪怕提交被回退、删除、分支丢弃,只要日志未过期(默认 90 天垃圾回收),都能找回丢失提交。

2. 核心作用:找回被删除 / 回退的 flag 提交

CTF 常见场景:开发者提交带 flag 文件后,执行git reset --hard回退,分支历史看不到 flag,但 reflog 保留操作记录。 完整复现流程:

  1. 查看本地操作日志

bash

运行

git reflog

输出示例:

plaintext

a1b2c3d 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
  1. 切换到丢失 flag 的历史快照

bash

运行

# 方式1 git checkout b7c8d9e # 方式2(推荐,分离头指针) git switch --detach b7c8d9e
  1. 读取 flag 文件

bash

运行

cat flag.txt
  1. 可选:新建分支永久保存该提交,防止日志过期丢失

bash

运行

git switch -c recover_flag

3. 关键注意点

  1. reflog仅本地存在,git clone 远程仓库无法直接获取他人操作日志;
  2. git reset --hard HEAD~1只会回退分支,旧提交不会立刻删除,由 reflog 保护 90 天;
  3. 区分git loggit reflog:log 只显示当前分支可达提交,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 是轻量数据交换格式,仅支持对象{}、数组[]、字符串、数字、布尔、null,key 必须双引号包裹。 对象示例:

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']; $json=json_decode($_GET['json'], true); if ($id=="wllnB" && $json["x"]=="wlln") { echo $flag; } ?>

解题思路:GET 参数传入 JSON 字符串,URL 编码后访问 Payload 示例:

plaintext

?json={"x":"wlln"}

配合 POST 提交id=wllnB即可满足双重条件拿到 flag。

四、HTML 表单提交原理(GET/POST)

1. GET 表单完整示例

html

预览

<form action="login.php" method="get"> <input type="text" name="username_dfa9"/> <input type="password" name="passwd_3a9f"/> <input type="submit" value="登录"> </form>
  • action:数据提交后端处理地址;
  • method="get":参数拼接在 URL 明文传输;
  • name属性是核心:后端通过$_GET['name值']接收参数,随机后缀是常见考点。

GET 请求 URL 效果:

plaintext

http://xxx/login.php?username_dfa9=test&passwd_3a9f=123456

2. POST 表单区别

  1. 参数放在请求体,不暴露在 URL;
  2. 适合密码、大文件传输;
  3. 后端接收:$_POST['参数名']
  4. 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. 经典例题复现

例题 1:XFF 本地 IP 绕过

页面提示:禁止外网 IP,仅本地管理员可访问 添加请求头:

plaintext

X-Forwarded-For: 127.0.0.1
例题 2:XFF+Referer 双重校验

限制:IP 必须123.123.123.123,来源必须谷歌 完整请求头:

plaintext

Host: xxx X-Forwarded-For: 123.123.123.123 Referer: https://www.google.com
例题 3:UA 浏览器校验

页面提示仅 WLLM 浏览器可访问 修改 UA 头:

plaintext

User-Agent: WLLM

3. Content-Type 分类

  1. application/x-www-form-urlencoded:普通表单 POST 默认;
  2. multipart/form-data:文件上传;
  3. application/json:接口 JSON 传参;
  4. text/xml:XXE 漏洞场景。

六、HTTP 响应状态码速记

状态码分类

  1. 1xx:信息响应;2xx:请求成功;3xx:重定向;4xx:客户端错误;5xx:服务器错误

CTF 高频状态码

表格

状态码含义考点
200请求成功正常拿 flag
301/302重定向抓包查看跳转前隐藏 flag
403禁止访问IP / 权限绕过
404页面不存在目录扫描
405请求方法不允许GET/POST 方法互换绕过
500服务器报错报错信息泄露源码

302 重定向考点

页面自动跳转,但 flag 藏在跳转前响应中,使用curl -i或 Burp 抓完整响应包查看内容。

七、Burp Suite 激活与基础抓包拦截使用

1. 工具激活流程(汉化破解版)

  1. 目录运行Start.bat/Start.VBS打开激活工具;
  2. Burp 选择手动激活,复制激活请求文本;
  3. 将请求粘贴至破解工具,生成授权许可密钥;
  4. 复制密钥粘贴回 Burp,完成激活,可勾选汉化;
  5. 注意:后续必须通过加载器启动,否则激活失效。

2. 核心功能:请求拦截修改

  1. 浏览器配置代理,指向 Burp 端口;
  2. 开启拦截(Intercept is on);
  3. 抓包后可任意修改:GET/POST 参数、请求头(XFF、Referer、UA、Cookie);
  4. 修改完成点击 Forward 放行请求,查看页面返回结果。

3. 配套小工具

  • HackBar:浏览器快速构造 GET/POST 请求,无需抓包;
  • curl 命令:快速发送请求,查看完整响应头 + 响应体。

八、学习总结

  1. Git reflog 是源码泄露类题核心,记住查看日志、切换历史提交两步拿 flag;
  2. HTTP 头伪造是 Web 签到题常客,XFF、Referer、UA 三种伪造务必熟练;
  3. GET/POST 表单分清参数传递位置,URL 传 JSON、随机 name 参数是坑点;
  4. Burp 作为 CTF 必备工具,基础抓包改包是所有 Web 题操作基础;
  5. 遇到 302 跳转、403 禁止访问优先考虑请求头伪造绕过。

九、拓展学习资源

  1. Git 可视化练习:https://learngitbranching.js.org/
  2. Git 官方中文文档:https://git-scm.com/book/zh/v2
  3. 抓包可视化工具:VSCode、Sourcetree、Burp Suite
  4. CTF 基础题库:NSSCTF、Bugku、攻防世界
http://www.gsyq.cn/news/1596594.html

相关文章:

  • 【CANdelaStudio-从入门到深入到实战】67 从“配置自由”到“配置文化”:如何用看板让团队告别“手滑”
  • Apache ActiveMQ CVE-2016-3088漏洞:从任意文件写入到命令执行实战剖析
  • HTML5安全实战指南:从CORS配置到CSP策略的全面防护
  • 2026保姆级人像抠图换背景教程:手机/电脑/免费在线工具手把手教学
  • 内存清理工具合集!大小不到1M的软件,让Windows瞬间丝滑!
  • 告别重复操作:鸣潮自动化工具如何解放你的游戏时间
  • SU(2)规范理论构建引力模型:动机、策略与挑战
  • 2026好用的抠图软件推荐!电脑手机在线免费抠图工具保姆级教程,新手也能上手
  • 设计院图纸版本管理 5 大坑:从 1832 张 CAD 到巴别鸟 32 维权限
  • 3 篇论文同一天截止?Gradpaper15 分钟出一篇,赶 due 不用熬通宵
  • 【JAVA毕设源码分享】基于SpringBoot+Vue的眼科患者随访管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • Python加密与在线工具结果不一致?详解AES/DES参数匹配与调试
  • 从SL₂(F)树结构到Kac-Moody代数:几何对称性与无穷维李代数的构建
  • 结婚证书翻译模板是什么?结婚证书翻译怎么办理?一篇读懂不踩坑
  • 【紧急预警】IntelliJ IDEA 2024新版已悄然变更Spring Boot项目默认配置!3类高危兼容性风险正在爆发,立即自查这4个关键节点
  • 优必选U1预售火爆,却面临竞争与财务双重挑战,能否实现经济可行?
  • 苹果多产品线全面涨价,内存成本压力下iPhone能否“独善其身”?
  • 如何快速配置大气层系统:面向Switch新手的完整指南
  • Android分包安装实战指南:SAI完整使用方案解析
  • 终极番茄小说下载神器:离线阅读的完美解决方案
  • 重新定义桌面交互:开源数字伙伴框架的5大创新设计
  • 高效抢票软件深度解析:基于Rust与Vue的跨平台解决方案
  • 4G+LoRa硫化氢监测系统设计与应用
  • RAG 向量数据库实战
  • 用 Codex 轻松做出专业视频,2 分钟学会 AI 视频动画制作
  • Metasploit与Wireshark联合实战:构建攻防观测一体化实验环境
  • 10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南
  • StarRailAssistant终极指南:3步实现崩坏星穹铁道全自动游戏体验
  • 自动化工作流安全:从权限模型到供应链污染的纵深防御实践
  • 智能网盘直链下载解决方案:告别限速,拥抱高速下载新时代