首页
社区
课程
招聘
[原创]网鼎杯2020 joker 烦人精题
发表于: 2020-5-10 21:28 5941

[原创]网鼎杯2020 joker 烦人精题

2020-5-10 21:28
5941

gcc编译,无壳:


看一下程序结构:

程序有函数分析错误,堆栈的原因,我就没改它了,因为汇编也简单,上手就撸:



第一个关键块:

4017DD就是一个字符串拷贝函数,动态可见,然后4017EB是第一个无用函数,看一下:

a1就是输入的flag,简单操作之后到4017F9函数判断:

byte_4030C0是硬编码字符,大概逆一下得到虚假flag:

byte_4030c0=[0x660x6B0x630x640x7F0x61,  0x670x640x3B0x560x6B0x610x7B0x260x3B0x500x630x5F0x4D0x5A0x710x0C0x370x66]

flag=""

for i in range(23):

    if i &1:

        byte_4030c0[i]+=i

    else:

        byte_4030c0[i]^=i


for i in range(23):

    flag+=chr(byte_4030c0[i])

print(flag)


flag{fak3_alw35_sp_me!!


肯定是不对的,然后下面这块吸引我的注意:


有smc操作,而且代码中确实有很多没有解释的byte,解密函数很简单,写idc也行,我直接动态调试:

虚假函数nop掉:

这就是刚刚的fake函数,nop掉就行:

下面就是自解密函数:

解密位置是401500,断在182D,然后过掉看结果:


之后就是调用这块代码了:

跟进去,单步可以看得到懂逻辑的:



大概意思就是输入的位数,和hahahaha_do_you_find_me?这个字符串异或之后,等于3040位置的硬编码值


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 3
支持
分享
最新回复 (7)
雪    币: 578
活跃值: (71)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
bang的题有吗
2020-5-10 21:50
0
雪    币: 9934
活跃值: (2554)
能力值: ( LV6,RANK:87 )
在线值:
发帖
回帖
粉丝
3
最后五个字节真是没想到。
可能这就是“ctf与实战关系不大”的说法来源吧
2020-5-10 22:05
0
雪    币: 430
活跃值: (2191)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
4
shit,最后四个字节卡了一下午
2020-5-11 00:33
0
雪    币: 200
活跃值: (17)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
5
Lauv bang的题有吗
bang那个,我用的FRIDA-DEXDump把dex dump下来。。jeb打开就看到flag了。
2020-5-11 17:03
0
雪    币: 3475
活跃值: (7764)
能力值: ( LV4,RANK:41 )
在线值:
发帖
回帖
粉丝
6
这题真的是贼傻逼。
2020-5-11 21:57
0
雪    币: 259
活跃值: (283)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
666
2020-5-11 22:15
0
雪    币: 162
活跃值: (170)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
8
这题秀哈哈哈哈
2020-5-13 11:28
0
游客
登录 | 注册 方可回帖
返回
//