(原创)i 春秋 CTF 大本营 basic 部分 writeup【i 春秋】【ctf writeup】【入门 ctf 题】
: https://www.ichunqiu.com/battalion
1. 回旋 13 踢
解题思路
题目中 “13” 为关键提示,对应ROT13 编码(凯撒密码的特殊形式,字母循环移位 13 位,A↔N、B↔O...Z↔M),直接对密文进行 ROT13 解码即可得到 flag。
编码规则
ROT13 特性:编码与解码使用同一规则(移位 13 位),例如:
s + 13 → f
y + 13 → l
n + 13 → a
t + 13 → g
操作验证
使用在线 ROT13 解码工具或手动计算,解码结果如下:
2. 小苹果
解题思路
题目提供wav音频文件,结合 “隐写” 场景,推测为音频隐写,使用专门的音频隐写工具SilentEye提取隐藏信息。
操作步骤
下载并安装SilentEye工具;
打开工具,导入题目中的wav文件;
选择 “Decode” 功能,提取隐藏的 flag。
工具验证
提取过程及结果:
3. Ropgadge
解题思路
题目给出一串 x86 汇编指令,需将其转换为机器码(16 进制),使用rasm2工具(radare2 框架组件)可直接完成汇编→机器码的转换。
工具介绍
rasm2核心参数:
-a:指定架构(如x86);
-b:指定位数(如32位);
直接传入汇编指令字符串,输出机器码。
操作命令
# 对目标汇编指令进行汇编,生成机器码
rasm2 "xchg eax,esp;ret;mov ecx,[eax];mov [edx],ecx;pop ebx;ret"
执行结果
**
4. Easyrsa
解题思路
题目提供 RSA 加密参数(C=0xdc2eeeb2782c、N=322831561921859、e=23),需通过大整数分解得到p和q,再计算私钥d,最终解密得到明文。
操作步骤
步骤 1:大整数分解(获取 p、q)
使用yafu工具分解N:
# 格式:yafu factor(待分解的N)
yafu factor(322831561921859)
分解结果:
步骤 2:参数整理(转换为 16 进制)
N = 0x1259d14921543
p = 0x16ae0a3
q = 0xcf22e1
e = 0x17
C = 0xdc2eeeb2782c
步骤 3:Python 解密脚本
import math
from Crypto.Util.number import inverse, long_to_bytes
# RSA参数
N = 0x1259d14921543
p = 0x16ae0a3
q = 0xcf22e1
e = 0x17
C = 0xdc2eeeb2782c
# 计算欧拉函数φ(N) = (p-1)*(q-1)
phi = (p - 1) * (q - 1)
# 计算私钥d = e^-1 mod φ(N)
d = inverse(e, phi)
# 解密:M = C^d mod N
M = pow(C, d, N)
# 转换为字符串
flag = long_to_bytes(M).decode('utf-8')
print("Flag:", flag)
步骤 4:结果验证
脚本执行结果:
将明文0x33613559转换为字符串(3a5Y),结合格式得到PCTF{3a5Y}:
5. 爱吃培根的你
解题思路
题目提示 “培根”,对应培根密码(通过字母大小写区分二进制,A=0、B=1,5 位一组对应字母)。
操作步骤
预处理密文:将大写字母转为B,小写字母转为A;
原始字符串:bacoN is one of aMerICa'S sWEethEartS. it's A dARlinG, SuCCulEnt fOoD tHAt PaIRs FlawLE
转换后:AAAABAAAAAAAABAABBABABBAAABAAABAAABABBAAABBABBAABAAABABABBABABBABAAABB
培根解码:5 位一组拆分(如AAAA B→A,AAAAA→A),拼接得到 flag。
解码结果
**
6. 熟悉的声音
解题思路
题目给出XYYY YXXX XYXX XXY XYY X XYY YX YYXX,结合 “声音” 提示,推测为摩斯密码(X=・、Y=-),解码后再通过凯撒密码调整得到 flag。
操作步骤
摩斯密码转换:
替换规则:X→·,Y→-
转换后:·--- -... ·-.. ..- .-- . .-- -. --..
摩斯解码:JBLUWEWNZ
凯撒密码调整:
观察到 “CTF” 敏感字符,尝试移位(如J-4→F、B-4→X...),最终得到 flag。
验证结果
**
7. 加密的文档
解题思路
题目提供带密码的压缩包,通过WinHex分析发现ZIP 伪加密(文件头与数据区加密标记不一致),修复后提取文档,再通过binwalk分离隐藏图片。
操作步骤
步骤 1:修复 ZIP 伪加密
用WinHex打开压缩包,找到文件头的 “加密标记”(偏移 0x09 处);
将伪加密标记0900改为0000(表示未加密):
步骤 2:分离文档隐藏内容
修复后提取doc文档,用binwalk分离隐藏文件:
binwalk -e 文档.doc
进入分离后的_文档.doc.extracted/word/media目录,找到隐藏图片image2:
步骤 3:获取 flag
打开image2图片,直接得到 flag。
8. Shellcode
解题思路
题目提供一段 Shellcode(机器码),需通过shellcodeexec工具执行,查看其输出内容(通常为 flag)。
操作步骤
下载工具:
git clone https://github.com/inquisb/shellcodeexec
执行 Shellcode:
将题目中的 Shellcode 传入工具,执行后获取输出的 flag。
工具执行
**
9. Base64
解题思路
题目提供密文GUYDIMZVGQ2DMN3CGRQTONJXGM3TINLGG42DGMZXGM3TINLGGY4DGNBXGYZTGNLGGY3DGNBWMU3WI===,尝试Base64解码失败后,发现其符合Base32编码特征(字符集为 A-Z、2-7),解码后再转换 16 进制为字符串。
操作步骤
Base32 解码:
使用在线 Base32 工具解码,得到 16 进制字符串:
504354467b4a7573745f743373745f683476335f66346e7d
16 进制转字符串:
将 16 进制字符串粘贴到WinHex或使用在线工具转换,得到PCTF{Just_t3st_h4v3_f4n}:
10. 手贱的 A 君
解题思路
题目提供字符串d78b6f302l25cdc811adfe8d4e7c9fd34,观察到包含小写字母l(非 16 进制字符),推测为输入错误,删除后得到标准 MD5 值,解密即可。
操作步骤
修复字符串:删除小写l,得到d78b6f30225cdc811adfe8d4e7c9fd34;
MD5 解密:使用在线 MD5 解密工具,得到明文hack(即 flag)。
11. Veryrsa
解题思路
题目直接提供 RSA 的p、q、e,需计算私钥d(d = e^-1 mod (p-1)*(q-1)),再用d解密C得到 flag。
操作步骤
计算私钥**d**:
使用 Python 的Crypto.Util.number.inverse函数计算d;
解密**C**:
通过pow(C, d, N)计算明文M,转换为字符串得到 flag。
脚本与结果
from Crypto.Util.number import inverse, long_to_bytes
# 题目给定的p、q、e、C(需替换为实际题目参数)
p = 0x... # 题目提供的p
q = 0x... # 题目提供的q
e = 0x... # 题目提供的e
C = 0x... # 题目提供的C
N = p * q
phi = (p - 1) * (q - 1)
d = inverse(e, phi)
M = pow(C, d, N)
flag = long_to_bytes(M).decode('utf-8')
print("Flag:", flag)
执行结果:
12. 实验室 logo
解题思路
题目提供图片,推测为图片帧隐写,使用Stegsolve工具查看图片的不同帧,提取隐藏的 flag。
操作步骤
下载图片:将实验室 logo 图片保存到本地;
使用 Stegsolve 分析:
打开工具,导入图片;
选择Analyse → Frame Browser,切换查看不同帧;
提取 flag:在第二帧图片中直接找到 flag。
操作结果
帧浏览界面:
提取到的 flag: