逆向之攻防世界(新手区)(2)

2.《game》

首先打开看看长啥样,之后用工具得出32位,下面我们分别用ida和od进行解题。

1.IDA

鉴于28行前代码无关紧要就不放在这里占空间了,同时说下如果IDA不能正确的获得自定义函数的名字,那么IDA会用sub__加上自定义函数的起始地址来定义函数的名字

35行的v2被赋为输入的值,之后if使v2属于[0,8]

在这里我们可以得出使byte_532E28每一位都是1,就会进入sub_457AB4(),我们猜测这可能就是出flag的地方。

继续跟进sub_457AB4()

此处省略部分...

基本可以推测出后面的为print函数,那么我们只要算出for循环里的就可以拿到flag了,上脚本

a = [123,32,......,126,0]
b = [18,64,......,16,0]
c = 0
flag = ''

while (c<56):
    a[c] ^= b[c]
    a[c] ^= 0x13
    flag = flag + chr(a[c])
    c = c + 1
print(flag)

2.OD

首先找到可能为最后flag的地址,跟进

图标为1的就是跟进的地址了,我们看标2的地方就是开始我们这个函数的地址,跟着红箭头一路向上找就可以找到跳转的地址

记住这个地址:E37AB4,我们再去寻找失败的地方

继续跟进

到了这,我们只需要覆盖掉就可以直接到达出flag的函数,输入jmp 0xE37AB4

保存文件后输入任意数值即可,

发布了25 篇原创文章 · 获赞 14 · 访问量 5445

猜你喜欢

转载自blog.csdn.net/qq_40568770/article/details/104689848
今日推荐