>
>
【月饼杯】re3 wp
Lazzaro
详见:
https://lazzzaro.github.io/2020/09/26/match-CTFshow-月饼杯/#re3-若无月
赛后对照着RC4算法啃做出。
IDA-F5找到关键字“Triglavian”+一串类似base64密文+一串类似base64码表,跟进关键字进入sub_401360函数,在case 1u内找到关键代码。
RC4算法包括初始化算法(KSA)和伪随机子密码生成算法(PRGA)两大部分。
(RC4 algorithm including initialization algorithm (KSA) and pseudo-random sub-password generation algorithm (PRGA) two parts.)
对照标准RC4算法,sub_401360函数中实现了KSA部分,可以发现改动了初始key数组(使用的newkey数组为aTriglavian变量中各字母对应码表的下标值,而非简单的字母对应ASCII值)和数组大小(使用64,非256)。
再往下看未发现PRGA部分,回到汇编代码文本视图,全局搜索S[,发现另一个函数sub_401160也存在。
跟进sub_501160函数,发现RC4算法的PRGA部分。
可以发现最后的异或部分,选取密文中每个字母,得到对应码表的下标值k,与标准生成的密钥流S[(S + S[j]) % 64]异或后得到新下标值,替换成码表中对应的字母。由于RC4的对称性,结果即为明文。
特别标注:
本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
- 我的微信
- 微信扫一扫
-
- 我的微信公众号
- 微信扫一扫
-
评论