做题学习笔记。
前言:目前遇见的reverse都是,已知密文,去求解明文flag;
此题逆着来,通过明文,去求解密文flag。
base加密的识别,还算容易。 那么,base解码的识别呢?
攻防世界--ReverseMe-120 - Hk_Mayfly - 博客园 (cnblogs.com)https://www.cnblogs.com/Mayfly-nymph/p/11645169.html谢谢。
下载 查壳。
32ida打开。
逆向往前看。
cmp
encode = you_know_how_to_remove_junk_code(垃圾代码?)
因为看不懂。。。默认成垃圾代码不过分吧。。。
当时看见这种明文格式,心里有底,这flag可能是某种编码,然后再XOR 25得到的encode——明文。
做题时,首先就先逆向还原 XOR 25:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>int main()
{char encode[] = "you_know_how_to_remove_junk_code";for (int i = 0; i < strlen(encode); i++){encode[i] ^= 37;printf("%c", encode[i]);//\JPzNKJRzMJRzQJzW@HJS@zOPKNzFJA@}printf("\n");system("pause");return 0;
}
//\JPzNKJRzMJRzQJzW@HJS@zOPKNzFJA@
然后。。。卡住了,但是知道是经过了某种算法。
但是里面的内容,我确实看不懂。(小白。。)
不懂,查资料呗:(这次真正理解了base64加密)。
base64加密原理 - Hk_Mayfly - 博客园 (cnblogs.com)https://www.cnblogs.com/Mayfly-nymph/p/11644823.html
base64加密 | 我的理解:
表:
当然,前提是,表未魔改 或者 加密算法,未魔改。
C语言实现base64的解码脚本:
(因为,此题,是用C/C++去写的,异曲同工之妙。)
Base64编解码算法详解(附C/C++源码)_base64解码算法-CSDN博客https://blog.csdn.net/prsniper/article/details/7097643
程序逻辑:
大概就是 输入的字符 进行 base64解码操作,然后XOR 25 得到的明文
那么,先XOR25() 再 对其进行编码操作即可。
// \JPzNKJRzMJRzQJzW@HJS@zOPKNzFJA@ 进行base64加密呗。
验证:
XEpQek5LSlJ6TUpSelFKeldASEpTQHpPUEtOekZKQUA=
总结:此题挺好的。 加密算法识别,解密算法识别,都需要能掌握。