2025黄鹤杯网络安全人才创新大赛 江城校园新星赛道 wp
字数 2498 2025-10-01 14:05:44
2025黄鹤杯网络安全人才创新大赛 - 江城校园新星赛道 WriteUp 教学文档
一、MISC 类题目
1. 中秋赏月
- 题目文件:BMP图像 + 加密压缩包
- 解题步骤:
- 使用十六进制编辑器(如010 Editor)打开BMP文件,修改图像文件头中的尺寸字段(将
C0 03改为FF 04),以修复图像比例。 - 修改后图像中可见密码:
21df#$de。 - 使用该密码解压加密压缩包,得到一个假Flag文件。
- 使用Sublime Text打开假Flag文件,发现其中包含零宽字符。
- 使用零宽字符解密工具(如在线解密或Python脚本)解密,得到真实Flag:
flag{ee4752ccc2eed2124b3c65e21287d748}
- 使用十六进制编辑器(如010 Editor)打开BMP文件,修改图像文件头中的尺寸字段(将
2. easy_usb
- 题目文件:USB流量包(
.pcap) - 解题步骤:
- 使用Wireshark打开流量包,过滤USB传输数据。
- 使用工具
CTF-net解密USB数据,得到图像IRPID*2。 - 提取所有USB数据包中的有效数据字段,发现大量重复数据。
- 对数据进行去重处理,并将每个字节乘以2(根据提示
IRPID*2)。 - 将处理后的数据转换为十六进制字符串,得到Flag:
flag{ffff8285beacca60ffff8285beacca60}
3. 日志分析
- 题目说明:原题为网络原题,参考CTF论坛解法。
- 解题步骤:
- 直接参考现有WriteUp或论坛解法(未提供具体日志内容,建议搜索相关题目)。
- 常见解法包括:日志过滤、时间戳分析、关键字提取等。
4. Simple_pcap
- 题目文件:加密压缩包 +
readme.txt - 解题步骤:
- 使用明文攻击(已知明文文件
readme.txt)爆破压缩包密码。 - 爆破得到密码:
1a2b3c。 - 解压后得到USB流量包,使用USB协议解密工具(如
usbprotocol)解密。 - 解密后得到Flag:
flag{usbprotocolforfun}
- 使用明文攻击(已知明文文件
二、Crypto 类题目
1. 栅栏里的保险箱
- 题目特点:两串数字,疑似RSA加密。
- 解题步骤:
- 假设外部数字为密文
c,内部数字为模数n。 - 使用
yafu分解n,得到p和q。 - 遍历可能的公钥
e(常见如65537,或根据题目提示尝试其他值)。 - 对每个
e计算明文m = c^d mod n,并尝试将其转换为字符串。 - 筛选包含
f,l,a,g,{,}的明文,发现唯一有效结果:f513lb9f22}a1a161gfe1f9{74ac82cc27cf23 - 使用栅栏解密(如随波逐流工具)处理该字符串,得到最终Flag。
- 假设外部数字为密文
2. easycry
- 题目文件:
attachment.py(RSA密钥生成脚本) - 密钥生成方式:
- 从固定列表
a = [35,51,91,115,123,187,235,267,403,427]随机选择D。 - 生成2048位随机整数
V,计算numbers = D*V^2 + 1。 - 若
numbers % 4 == 0,则令p = (D*V^2 + 1) / 4。 - 生成另一个2048位素数
q,计算n = p*q。 - 使用
e=65537加密Flag。
- 从固定列表
- 攻击方法:
- 利用
p的特殊形式,通过类群分解法或二次筛法变种在多项式时间内分解n。
- 利用
- Flag:
flag{7c4a8d09ca3762af61e59520943dc26494f8941b}
三、Web 类题目
1. Code
- 代码逻辑:
- 三个输入参数:
input1,input2,input3。 - 条件1:
$input1 == 0(PHP弱类型比较,如php://...转数字为0)。 - 条件2:
file_get_contents($input2) == "Welcome!"(可使用Data URI:data://text/plain,Welcome!)。 - 条件3:
$input2 == 0(Data URI转数字为0)。 - 若满足条件,执行
file_get_contents($input1)并输出内容。
- 三个输入参数:
- Payload构造:
?input1=php://filter/read=convert.base64-encode/resource=flag.php &input2=data://text/plain,Welcome! &input3=i:0; - 结果:输出
flag.php的Base64编码内容,解码后得Flag。
2. RCEME
- 题目说明:PHP计算器,限制字符白名单(数字、运算符、括号、单引号、点),长度≤70。
- 攻击方法:
- 利用异或运算(
^)从允许字符中构造出所需函数名(如file_get_contents)。 - 拼接出完整Payload:
file_get_contents('flag')。 - 进行URL编码后发送请求。
- 利用异或运算(
- 工具:使用Python脚本自动化构造并发送Payload。
四、RE(逆向工程)类题目
1. antiapk
- 题目文件:APK文件
- 解题步骤:
- 使用Jadx反编译APK,发现主要逻辑在Native层(
libanti.so)。 - 分析JNI函数:输入长度必须为16。
- 动态加载
libanti.so,分析其加密逻辑:- 生成128字节子密钥区。
- 16轮ARX变换(加法-旋转-异或)。
- 调用LuaJIT字节码(
/data/data/.../cadhe)处理输入。
- 发现线性关系:
RSB_out = input XOR KS,TARGET = flag XOR KS。 - 通过一次输入观测计算Key Stream(KS),进而计算Flag:
flag = TARGET XOR input XOR RSB_out - 最终Flag:
flag{aj5oyjs1kf}
- 使用Jadx反编译APK,发现主要逻辑在Native层(
2. 系统调试
- 题目文件:两个可执行文件(
.exe) - 解题步骤:
- 使用IDA反编译主程序,找到关键函数
sub_40074D。 - 分析发现比较逻辑:输入与固定数组
[5,2,7,2,5,6]相关。 - 将每个元素加109后转换为字符:
得到arr = [5,2,7,2,5,6] flag = ''.join(chr(x + 109) for x in arr)rotors。 - 最终Flag:
flag{rotors}
- 使用IDA反编译主程序,找到关键函数
关键知识点总结
- 文件格式分析(BMP、USB流量、压缩包)
- 加密算法逆向(RSA、自定义加密、线性 cryptanalysis)
- PHP弱类型与协议利用(php://, data://)
- 代码执行与绕过技巧(字符限制、异或构造)
- Android Native逆向(JNI、LuaJIT、动态分析)
- Windows逆向与调试(IDA、关键函数定位)
如果有需要修改或者补充的地方,可以随时告诉我。