ida打开,进入main函数
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rA2j4dyq-1596100137402)(D:\markdown\文件\图片\7.2.2.png)]](https://i-blog.csdnimg.cn/blog_migrate/4f46dcd25dc2a41631a11421837c0b1f.png)
有一个关键函数,和一个关键比较
先进入关键函数里面
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lzOQzWZT-1596100137403)(D:\markdown\文件\图片\7.2.3.png)]](https://i-blog.csdnimg.cn/blog_migrate/d67fd0b3bab272252871c620919e387d.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v3XQVUAl-1596100137404)(D:\markdown\文件\图片\7.2.4.png)]](https://i-blog.csdnimg.cn/blog_migrate/d7a009904ab748ab05bc0c8441410dc8.png)
最开始有一个sub_401000()函数,进入后
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-37TpOKHM-1596100137407)(D:\markdown\文件\图片\7.2.5.png)]](https://i-blog.csdnimg.cn/blog_migrate/23bf3c0519ebf487901afc54b153ab9c.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QLTwOaDG-1596100137408)(D:\markdown\文件\图片\7.2.6.png)]](https://i-blog.csdnimg.cn/blog_migrate/193e7e613b8a35250a9b040236f3ecc0.png)
感觉有点像base64加密,然后这个函数是变换base64的码表,写脚本将变换后的码表求出来
#include <stdio.h>
int main()
{
char b[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
char c;
int i=6;
printf("sss\n");
do
{
c=b[i+10];
b[i+10]=b[i];
b[i++]=c;
}
while(i<15);
printf("%s",b);
}
得到码表:ABCDEFQRSTUVWXYPGHIJKLMNOZabcdefghijklmnopqrstuvwxyz0123456789+/
然后注意到返回时的函数sub_401030()
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d1JAzhKr-1596100137409)(D:\markdown\文件\图片\7.2.7.png)]](https://i-blog.csdnimg.cn/blog_migrate/8acde376643d83c9789767b0ee0113c0.png)
很明显是一个大小写互换的函数
所以我们可以通过main函数里的判断条件来逆推flag
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aIoRh6Lv-1596100137410)(D:\markdown\文件\图片\7.2.8.png)]](https://i-blog.csdnimg.cn/blog_migrate/7e4a45142e1ce8c95ef51be51db5937e.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IJ9sHFnt-1596100137411)(D:\markdown\文件\图片\7.2.10.png)]](https://i-blog.csdnimg.cn/blog_migrate/032fd593ab0d04be955a4054f7c44db8.png)
比较数据为:zMXHz3TIgnxLxJhFAdtZn2fFk3lYCrtPC2l9
先转换为大写:ZmxhZ3tiGNXlXjHfaDTzN2FfK3LycRTpc2L9
然后根据之前的码表解密
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DgkYLTDX-1596100137411)(D:\markdown\文件\图片\7.2.11.png)]](https://i-blog.csdnimg.cn/blog_migrate/82eb5e66080f96d9017eef1e9448d3f2.png)
flag为:flag{bAse64_h2s_a_Surprise}
本文通过IDA Pro分析一个关键函数,发现其使用变换后的Base64码表进行加密。通过对码表的逆向工程,揭示了加密背后的秘密,并最终解密得到flag。文章详细介绍了逆向过程和解密步骤。
631

被折叠的 条评论
为什么被折叠?



