2019 Aurora
记录一次内部赛的writeup0.0
Climb
题目: Climb
可以直接找到main函数:
__int64 __fastcall main(__int64 a1, char **a2, char **a3) |
那首先将climb和key转化为两个矩阵。然后用扩展欧几里得算法求出, climb行列式的值的逆元, 以求出climb的逆矩阵, 相乘即得答案。
[希尔密码求解方法]
脚本如下:
from numpy import * |
flag : Aurora{7h3n_f4r3_u_w3ll_5w337_cr4g13_HILL_wh3r3_0f3n_71m35_1_v3_r0v3d}
baby_transform
main函数:
int __cdecl main(int argc, const char **argv, const char **envp) |
分析可得过程为:读取flag文件->傅里叶变换->输出到enc文件
Fourier_transform函数:
__int64 __fastcall Fourier_transform(__int64 a1, __int64 enc, signed int a3) |
解密脚本如下:
将enc中数据转化为复数表达形式:
|
快速傅里叶变化:
# -*- coding: UTF-8 -*- |
flag:Aurora{d15cr373_f0ur13r_7r4n5f0rm_15_r34lly_1n73r3571n6}
babypyobf
题目:babypyobf
打开来是个.pyc文件, 用uncompyle6转成py文件。
# uncompyle6 version 3.3.3 |
手工去混淆:
o = [] |
RC4加密, s_box可以直接导出, 最终解密脚本如下:
b = [199, 191, 168, 72, 189, 125, 226, 235, 210, 126, 156, 247, 93, 137, 42, 138, 76, 23, 139, 151, 29, 39, 31, 136, 143, 129, 0, 242, 73, 19, 236, 61, 235, 70, 18, 27, 250, 135, 60, 112, 48] |
flag:Aurora{w3lc0m3_70_7h3_w0rld_0f_c0nfu510n}
cryyyyyyypto
题目:cryyyyyyypto
根据字符串找到主要函数, 带了6个加密算法……..
int __cdecl main(int argc, const char **argv, const char **envp) |
RC5
一开始没认出来, 人工逆向破解0.0…
RC4
void __fastcall RC4(unsigned __int8 *plaing, __int64 a2) |
特征是init_Sbox()里:
size_t __fastcall sub_7FF6D89332B0(char *a1) |
AES
__int64 __fastcall sub_7FF6D8931970(__int64 *a1, __int64 a2) |
进去AES:
__int64 __fastcall sub_7FF6D8934210(void *key, unsigned int num_16_1, __int64 *a3, __int64 *a4, unsigned int num_16) |
初始置换:
__int64 __fastcall sub_7FF6D89349E0(__int64 a1, __int64 a2, _DWORD *a3) |
特征:AES的S_box:
.data:00007FF6D8942000 S_box db 63h, 7Ch, 77h, 7Bh, 0F2h, 6Bh, 6Fh, 0C5h, 30h, 1, 67h |
DES
__int64 __fastcall sub_7FF6D89324E0(__int64 a1, __int64 a2) |
进入DES:
__int64 __fastcall DES(__int64 input_0, __int64 key_0, __int64 src) |
DES置换规则:
.data:00007FF6D8942100 DES_Sbox dd 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20 |
TEA
__int64 __fastcall sub_7FF6D8934070(__int64 input_0, __int64 key_1) |
进入TEA_0:
signed __int64 __fastcall sub_7FF6D8934650(int *input_0, int *key_0) |
blowfish
__int64 __fastcall blowfish_0(unsigned int *input_0, __int64 key_1) |
__int64 __fastcall sub_7FF6D8932710(char *a1) |
特征:
.data:00007FF6D8942DE0 dword_7FF6D8942DE0 dd 243F6A88h, 85A308D3h, 13198A2Eh, 3707344h, 0A4093822h |
TEA解密
|
最终解密脚本
from Crypto.Cipher import Blowfish |
flag:Aurora{wh47_d035n7_k1ll_y0u_m4k35_y0u_57r0n63r}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Lantern's 小站!
评论