2022 BlueWhaleCTF WriteUp
字数 1597 2025-08-07 00:34:54

2022 BlueWhaleCTF 解题分析与技术教学

0x01 逆向工程(RE)部分

easyxor 题目解析

题目描述:简单的异或加密
解题步骤

  1. 题目提供了一个经过异或加密的字节数组
  2. 使用0x22作为异或密钥进行解密
  3. Python解密代码:
f2 = [0x44,0x4E,0x43,0x45,0x59,0x5A,0X6D,0X50,0x7D,0x13,0x51,0x7D,0x54,0x11,0X50,0X5B,0X5B,0X5B,0X5B,0X5B,0X5B,0X5B,0X5B,0X5B,0X5B,0x7D,0x47,0x16,0x51,0x5B,0X5F]
flag=''
for i in range(31):
    flag +=chr(f2[i]^0x22)
print(flag)

技术要点

  • 异或加密是可逆的,A ^ B = C ⇒ C ^ B = A
  • 需要识别出加密算法和密钥

oh_my_python 题目解析

题目描述:pyc反编译题目
解题步骤

  1. 反编译pyc文件获取源代码
  2. 分析代码逻辑:
def chall():
    flag = ''
    l = 'CKNOPWY_acfghkloruwy{}'
    index = [10,14,8,11,20,0,8,2,7,6,3,17,7,1,3,5,2,7,12,3,5,7,4,19,9,7,18,15,16,13,21]
    answer = ''
    for i in index:
        answer += l[i]
    print(answer)
  1. 直接运行代码获取flag

技术要点

  • pyc文件反编译工具使用
  • Python索引操作理解

xpu 题目解析

解题步骤

  1. 使用UPX工具脱壳:upx -d filename
  2. 脱壳后文件包含base64编码数据
  3. 解码base64获取flag

技术要点

  • UPX壳识别与脱壳技术
  • base64解码方法

asm_master 题目解析

解题步骤

  1. 获取汇编代码
  2. 使用gcc编译:gcc -c file.s -o file.o
  3. 使用IDA分析.o文件
  4. 定位printf等关键函数

技术要点

  • 汇编语言基础
  • GCC编译流程
  • IDA静态分析技术

0x02 杂项(Misc)部分

Checkin 题目解析

解题步骤

  1. 扫描二维码或分析二维码链接
  2. 提取#号后的内容作为flag

技术要点

  • 二维码信息提取技术

simplepcap 题目解析

解题步骤

  1. 分析pcap流量文件
  2. 提取MacOS程序
  3. 解密算法分析:
v7 = [0x25,0x2F,0x22,0x24,0x38,0x21,0x22,0x21,0x3A,0x1C,0x33,0x20,0x22,0x33,0x1C,0x2A,0x30,0x1C,0x35,0x26,0x31,0x3A,0x1C,0x26,0x22,0x30,0x3a,0x3E]
flag = ''
for i in range(len(v7)):
    flag+= chr(v7[i]^0x43)
print(flag)

技术要点

  • Wireshark流量分析
  • 数据包中文件提取
  • 异或解密技术

warmatap 题目解析

解题步骤

  1. 分析视频节拍
  2. 按照节拍敲击键盘
  3. 获取flag:flag{wozuixihuanwarmale}

技术要点

  • 视频信息分析
  • 节奏模式识别

0x03 Web安全部分

你比香农都牛逼 题目解析

解题步骤

  1. Ctrl+S保存网页
  2. 分析JS代码
  3. 发现JSFuck编码
  4. 解码JSFuck获取flag

技术要点

  • JSFuck编码原理与解码
  • 前端代码分析技术

old php game 题目解析

题目代码

error_reporting(0);
require __DIR__.'/flag.php';

$exam = 'return\''.sha1(time()).'\';';

if (!isset($_GET['flag'])) {
    echo '<a href="./?flag='.$exam.'">Click here</a>';
}
else if (strlen($_GET['flag']) != strlen($exam)) {
    echo 'Not allowed length';
}
else if (preg_match('/`|"|\.|\\\\|$|$|
$$
|
$$
|_|flag|echo|print|require|include|die|exit/is', $_GET['flag'])) {
    echo 'Not allowed keyword';
}
else if (eval($_GET['flag']) === sha1($flag)) {
    echo $flag;
}

解题步骤

  1. 分析$exam长度为49
  2. 绕过过滤字符限制
  3. 使用PHP短标签构造payload

技术要点

  • PHP eval函数风险
  • 代码注入绕过技术
  • PHP短标签使用

very old php game 题目解析

解题思路

  1. 利用$GLOBALS超全局变量
  2. 构造payload访问全局变量
  3. 绕过限制获取flag

技术要点

  • PHP变量变量(

\[var)理解 - $GLOBALS超全局数组使用 ### Baby Unserialize 题目解析 **题目代码**: ```php require_once "flag.php"; class Foo { private $i_am_flag; public $i_am_not_flag; public function __construct() { $this->i_am_not_flag =&$this->i_am_flag; } public function __wakeup() { $this->i_am_not_flag = 'I am not flag!'; } } $O = new Foo(); echo base64_encode(serialize($O)); ``` **解题步骤**: 1. 分析序列化结构 2. 绕过__wakeup()方法 3. 利用引用传递特性 4. 构造恶意序列化数据 **技术要点**: - PHP序列化与反序列化 - __wakeup魔术方法绕过 - 对象引用理解 ## 0x04 PWN部分 ### flag_in_stack 题目解析 **解题步骤**: 1. 识别格式化字符串漏洞 2. 利用%p泄露栈上数据 3. 构造payload:`%10$p%11$p%12$p%13$p` 4. 从泄露数据中提取flag **技术要点**: - 格式化字符串漏洞利用 - 栈内存布局理解 - 地址泄露技术 ## 综合技术要点总结 1. **加密算法识别与破解**: - 异或加密特征与破解 - base64编码识别与解码 2. **逆向工程技术**: - pyc文件反编译 - UPX脱壳技术 - 汇编代码分析 3. **Web安全技术**: - PHP代码注入 - 反序列化漏洞利用 - 过滤绕过技术 4. **杂项分析技术**: - 流量文件分析 - 数据提取与解密 - 多媒体信息分析 5. **PWN技术**: - 格式化字符串漏洞利用 - 内存泄露技术 本WriteUp详细记录了2022 BlueWhaleCTF的解题思路和关键技术点,可作为CTF学习和训练的参考资料。\]

2022 BlueWhaleCTF 解题分析与技术教学 0x01 逆向工程(RE)部分 easyxor 题目解析 题目描述 :简单的异或加密 解题步骤 : 题目提供了一个经过异或加密的字节数组 使用0x22作为异或密钥进行解密 Python解密代码: 技术要点 : 异或加密是可逆的,A ^ B = C ⇒ C ^ B = A 需要识别出加密算法和密钥 oh_ my_ python 题目解析 题目描述 :pyc反编译题目 解题步骤 : 反编译pyc文件获取源代码 分析代码逻辑: 直接运行代码获取flag 技术要点 : pyc文件反编译工具使用 Python索引操作理解 xpu 题目解析 解题步骤 : 使用UPX工具脱壳: upx -d filename 脱壳后文件包含base64编码数据 解码base64获取flag 技术要点 : UPX壳识别与脱壳技术 base64解码方法 asm_ master 题目解析 解题步骤 : 获取汇编代码 使用gcc编译: gcc -c file.s -o file.o 使用IDA分析.o文件 定位printf等关键函数 技术要点 : 汇编语言基础 GCC编译流程 IDA静态分析技术 0x02 杂项(Misc)部分 Checkin 题目解析 解题步骤 : 扫描二维码或分析二维码链接 提取#号后的内容作为flag 技术要点 : 二维码信息提取技术 simplepcap 题目解析 解题步骤 : 分析pcap流量文件 提取MacOS程序 解密算法分析: 技术要点 : Wireshark流量分析 数据包中文件提取 异或解密技术 warmatap 题目解析 解题步骤 : 分析视频节拍 按照节拍敲击键盘 获取flag: flag{wozuixihuanwarmale} 技术要点 : 视频信息分析 节奏模式识别 0x03 Web安全部分 你比香农都牛逼 题目解析 解题步骤 : Ctrl+S保存网页 分析JS代码 发现JSFuck编码 解码JSFuck获取flag 技术要点 : JSFuck编码原理与解码 前端代码分析技术 old php game 题目解析 题目代码 : 解题步骤 : 分析$exam长度为49 绕过过滤字符限制 使用PHP短标签构造payload 技术要点 : PHP eval函数风险 代码注入绕过技术 PHP短标签使用 very old php game 题目解析 解题思路 : 利用$GLOBALS超全局变量 构造payload访问全局变量 绕过限制获取flag 技术要点 : PHP变量变量($$var)理解 $GLOBALS超全局数组使用 Baby Unserialize 题目解析 题目代码 : 解题步骤 : 分析序列化结构 绕过__ wakeup()方法 利用引用传递特性 构造恶意序列化数据 技术要点 : PHP序列化与反序列化 __ wakeup魔术方法绕过 对象引用理解 0x04 PWN部分 flag_ in_ stack 题目解析 解题步骤 : 识别格式化字符串漏洞 利用%p泄露栈上数据 构造payload: %10$p%11$p%12$p%13$p 从泄露数据中提取flag 技术要点 : 格式化字符串漏洞利用 栈内存布局理解 地址泄露技术 综合技术要点总结 加密算法识别与破解 : 异或加密特征与破解 base64编码识别与解码 逆向工程技术 : pyc文件反编译 UPX脱壳技术 汇编代码分析 Web安全技术 : PHP代码注入 反序列化漏洞利用 过滤绕过技术 杂项分析技术 : 流量文件分析 数据提取与解密 多媒体信息分析 PWN技术 : 格式化字符串漏洞利用 内存泄露技术 本WriteUp详细记录了2022 BlueWhaleCTF的解题思路和关键技术点,可作为CTF学习和训练的参考资料。