18.10.8 实验吧----迷路

伴随着悠扬的歌声,我们打开这个exe

反正我看到标题我怀疑是maze迷宫类型的题目

靠字符串定位(you win)

但是找到主要段之后,因为sp不平衡要手动平衡栈,如下

我自己是靠patchbytes才成功的,要是同样有需要patchbytes,但不知道机器码这里有个链接:https://blog.csdn.net/qq_42192672/article/details/82964838

然后这题目最坑的地方我实在OD中发现的

我真的XXXX,原来迷路是这个意思,把一个按钮隐藏了,那我原先那块分析他干嘛(出题人不可能藏个错的吧……)

od里ctrl+g搜索ShowWindow下断

这个下断过程其实还蛮纠结的,给你们细细说一下我怎么做的,先是下断,跳转到了ShoeWindow内部,然后单步执行回代码段,会发现停在call ShowWindow代码的下一句,然后回调断点,重新运行就好啦,如下图

我们可以右下角在栈中看见这个按钮是被隐藏的(SW_HIDE),看来运气比较好,直接找了被隐藏的,不用重新找了,把00000000改成00000001就可以把按钮显示出来了,我自己是直接用resource_hacker改按钮属性的,如下

好了好了,刚开始可以分析,其实关键就是要找出关键函数对应的地址,然后去IDA里面接着分析,真是心累,但是我更改了按钮的属性之后就会直接卡死,谁来救救我

但也没办法,只能继续做,在GetWindowTextA处下断,od里逐步跟,有个函数很关键,如下

我们先说一下我是怎么定位到这个函数的吧,我们可以看到401F47(错误提示的地方)设置内存访问断点来定位,毕竟判断是否正确的不太容易找,但是判断失败还是容易的

定位之后我们在IDA里看一下这个函数的判断方式

看出来是个格式判断,重要的信息就是的flag的格式,继续看吧,不明白……我们换成这种格式重新运行一边

这里我把401F9D的语句先nop掉了,为了观察下面两个函数要干嘛,后来发现这两个函数都用到了我们传入的参数,宁可杀错不可放过,在IDA里面都观察一下

先是第一个,如下

emmmm,好像不是我们可以揣测的

第二个,如下

我们可以看到传参函数(401740)和401860传入的参数一样,不难看出该函数是对传入的字符串进行一种改变,到时候再回来看

继续单步执行,总中找到变形之后的字符串(正确的值),逆着推回去

逆的方法就在函数401860中,写脚本

key=['b','5','h','7','6','0','h','6','4','R','8','6','7','6','1','8','b','B','w','B','4','8','B','r','W','9','2','H','4','w','5','r']

v8=0
v6=28
v5=5   #3/5
flag=''
for i in range(len(key)):
    if 48<=ord(key[i]) and ord(key[i])<=57:
        flag+=key[i]
        continue
    elif 65<=ord(key[i]) and ord(key[i])<=90:
        num=ord(key[i])-65
        for j in range(0,26):
            if ((v6+5*j)%26==num):
                flag+=chr(j+65)
                break
    elif 122>=ord(key[i])and ord(key[i])>=97:
        num=ord(key[i])-97
        for j in range(0,26):
            if ((v6+5*j)%26==num):
                flag+=chr(j+97)
                break

print('OOCTF{'+flag+'}')

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值