[2019红帽杯]easyRE1题解
迷蒙马背眠,月随残梦天边远,淡淡起茶烟。
——松尾芭蕉
目录
1.查壳
ELF文件,64bit
2.拖入64位IDA,找到主函数
没有标明main函数,我们打开string窗口跟踪一下存储的字符串常量
发现一个base64编码表,base64不懂的查看博文
点击这个编码表跟进
将光标放在上面按下快捷键X查看调用这个字符串的地方
点击进入
按下F5反汇编
while ( v2 < v4 - 2 )
{
*(_BYTE *)(v6 + v2) = aAbcdefghijklmn[*(_BYTE *)(v3 + a1) >> 2];
*(_BYTE *)(v6 + v2 + 1LL) = aAbcdefghijklmn[(16 * (*(_BYTE *)(v3 + a1) & 3)) | (*(_BYTE *)(v3 + 1LL + a1) >> 4)];
*(_BYTE *)(v6 + v2 + 2LL) = aAbcdefghijklmn[(4 * (*(_BYTE *)(v3 + 1LL + a1) & 0xF)) | (*(_BYTE *)(v3 + 2LL + a1) >> 6)];
*(_BYTE *)(v6 + v2 + 3LL) = aAbcdefghijklmn[*(_BYTE *)(v3 + 2LL + a1) & 0x3F];
v3 += 3;
v2 += 4;
}
这是base64编码的代码,需要知道base64编码算法的特征
这个函数有传入的参数,应该不是主函数
将光标放在函数名出,按下快捷键N重命名为base64encode
我们继续回到string窗口,查看别的可疑字符串
我们用同样的方法找到You find me字符串被使用的函数
这个函数应该是主函数
可以重命名一下函数名,光标放在函数名上,按下快捷键N
3.静态分析主函数
关注这部分
if ( i >= v5 )
break;
这是循环结束的条件
照着这个循环用脚本模拟一下,看看会输出什么
输出:
Info:The first four chars are `flag`
前四个字符是flag
继续往下分析
是一组base64加密
黄色部分是一个strcmp函数
跟进off_6CC090
继续跟进aVm0wd2vhuxhtwg
这是一个base64编码将这个base64编码多次解码
不断解密
进入这个网址
没什么用,纯属干扰解题的坑
下面有一个数据,使用快捷键X交叉引用查看一下
到这个函数中分析一下
v1是unsigned int 四个字节,高字节与低字节抑或分别是f和g,中间还有两个字节,那么很可能按位与其抑或就是flag
然后循环取出这四个字节与数据段异或就是flag
4.wp
flag{Act1ve_Defen5e_Test}
其他题解请关注我的专栏
- 点赞
- 收藏
- 关注作者
评论(0)