攻防世界RE——BABYRE

BABYRE

下载附件放到exeinfo里面查壳
这里我将文件名改为了baby
在这里插入图片描述
无壳,64位elf,直接放到idapro(64位)里面
找到main然后f5查看伪代码
在这里插入图片描述

(*(unsigned int (__fastcall **)(char *))judge)(s)

这条代码的judge并非是数组而是一个函数
含义:unsigned int 是函数返回类型(无符号整型)
(__fastcall **)是函数的调用约定
(char *)提取judge数组头字符串做函数名
双击judge进行函数追踪
然后按C(转汇编)
P(创建函数)
切记,要实现c p鼠标必须选中judge 地址
完成上面的操作即可复现judge函数
在伪代码中有这么一段代码
在这里插入图片描述
这段代码将judge函数的代码段进行了重构,我们需要嵌入脚本回复真正Judge函数代码段
ctrl z返回到p之前
选择judge地址按shift + f2即可嵌入脚本
在这里插入图片描述

addr = 0x600b00
for i in range(182):
    PatchByte(addr+i,Byte(addr+i)^0xc)

然后run
在这里插入图片描述
然后p生成函数
在这里插入图片描述
回到之前的伪代码,然后双击judge即可看到恢复后的judge的伪代码
在这里插入图片描述
两个字符型数组v2,v3
v2=‘fmcd\x7f’
v3=‘k7d;V`;np’
逻辑很容易理解,这里就不作解释了
直接编写脚本

key = 'fmcd'+chr(127)+'k7d;V`;np'
flag=''
for i in range(len(key)):
    flag += chr(ord(key[i])^i)

print(flag)

在这里插入图片描述
得出flag{n1c3_j0b}

感谢各位的耐心观看!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A1gorithms

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值