[2019红帽杯]easyRE

[2019红帽杯]easyRE

一、查壳

无壳,64位

二、IDA分析

在函数表中些搜索不到main,就shife+f12字符串搜索。

终于看见有用的了,点进去。

发现是sub_4009C6函数中引用了,再点进去。

很好,菜狗我不会了,看看网上大佬的wp吧(手动流泪)

我的天哪,不看不知道一看吓一跳!!

这个题竟然还有坑!!!

由于有网上大佬们的帮助,我在这里直接跳过坑(开心开心)

这还是sub_4009C6里面的内容

 
#v1的值是上面的绿色字符转化而来
 v1[1] = 111
 v1[2] = 100
 v1[3] = 108
 v1[4] = 62
 v1[5] = 81
 v1[6] = 110
 v1[7] = 98
 v1[8] = 40
 v1[9] = 111
 v1[10] = 99
 v1[11] = 121
 v1[12] = 127
 v1[13] = 121
 v1[14] = 46
 v1[15] = 105
 v1[16] = 127
 v1[17] = 100
 v1[18] = 96
 v1[19] = 51
 v1[20] = 119
 v1[21] = 125
 v1[22] = 119
 v1[23] = 101
 v1[24] = 107
 v1[25] = 57
 v1[26] = 123
 v1[27] = 105
 v1[28] = 121
 v1[29] = 61
 v1[30] = 126
 v1[31] = 121
 v1[32] = 76
 v1[33] = 64
 v1[34] = 69
 v1[35] = 67
 flag=""
 for i in range(36):
     flag+=chr(v1[i]^i)
 print(flag)
 -------------------------
 Info:The first four chars are `flag`

sub_4009C6里面的内容往下看

这一部分就是base64加密的坑,解开也没有用

好,再往下看

点off_6CC090

发现他下面还有byte_6CC0A0(shife+e提取数据)的引用函数sub_400D35函数

所以写脚本

 enc = [0x40,0x35,0x20,0x56,0x5D,0x18,0x22,0x45,0x17,0x2F,0x24,0x6E,0x62,0x3C,0x27,0x54,0x48,0x6C,0x24,0x6E,0x72,0x3C,0x32,0x45,0x5B]
 key = ""
 flag = ""
 en = "flag"
 for i in range(4):
     key+=chr(enc[i]^ord(en[i]))
 print(key)
 for j in range(len(enc)):
     flag+=chr(enc[j]^ord(key[j%4]))
 print(flag)
 -----------------------
 flag{Act1ve_Defen5e_Test}

最后我借鉴得大佬的文章:

BUUCTF-[2019红帽杯]easyRE(Reverse逆向)-----是乙太呀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值