-
-
[原创]Q2 第六题消失的岛屿解题思路
-
发表于: 2019-6-16 17:16 2898
-
找到定义,为定义字符串,找到引用,发现为输出字符串。则此处为核心区域。
阅读后,得知为Base64字符转码,给出转码后的字符串,输入字符串进行转码,转码匹配则破解成功。而要匹配的字符串为:
即!NGV%,$h1f4S3%2P(hkQ94==
那么我们需要观察当前转码函数:IDA中汇编代码较长,这里列举出其C语言代码:
大意如下,字符数组下表为0的字符开始,3个字符为一组,第一个字符x的Ascii码值右移两位,与0x3F进行按位与,得到的值传入CharEncrypt函数进行进一步计算,得到转换码。存入申请的内存base64[i+0]。至于CharEncryp函数,我们将在下面进行介绍。
计算current,其值等于x左移4位 和0x30按位与的结果。取第二个输入字符y,右移4位,和current进行按位或得到的值,传入CharEncrypt函数进行进一步计算,得到转换码。存入申请的内存[i+1]。
计算currenta, 其值等于y左移2位和0x3C按位与的结果。取第三个输入字符z, 右移6位,和currenta进行按位或得到的值,传入CharEncrypt函数进行进一步计算,得到转换码。存入申请的内存[i+2]。
将z和0x3F进行按位与 得到的值,传入CharEncrypt函数进行进一步计算,得到转换码。存入申请的内存[i+3]。
也就是说输入三个字符得到转换结果位4个字符。
CharEncrypt函数翻译代码如下:
上面传入的参数其实为一个字符数组下标。即这个字符串:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
- [原创]CVE-2020-1350分析与复现 10227
- [原创]CTF 2019 决赛 签到题 划水 2205
- [原创]Q2 第六题消失的岛屿解题思路 2899
- [原创]Q2 第一题神秘来信解题思路 1942