re题(31-32)BUUCTF-re

[MRCTF2020]Xor

BUUCTF在线评测 (buuoj.cn)

查壳,无壳

ida打开,找到关键字符串

通过交叉引用 来到sub_401090

试一试F5反汇编,报错了,而且不是sp错误

直接看汇编
首先我们看到 这里压入了byte_4212C0 和 %s
这个我们就知道 flag其实储存在byte_4212C0中

然后把byte_4212C0的地址赋值给edx,把edx+1给ecx

然后是一个循环,把edx处存的数据给al,让edx自增,让al自己逻辑与运算,当al是零的时候ZF标志位为1,不进行跳转,不是零继续自增。因为edx处存的是flag,当flag字符取完后,al就是零,往下执行,让edx减去ecx剩下的就是flag的长度,再做一个比较,可以知道flag长度是27

如果不是27,直接打印wrong

是27往下执行,这时候eax是0,异或完是0

然后让flag[eax]与eax异或,再与已知字符串比较,相等的话,让eax加一,重复异或和比较,直到eax等于edx,继续往下执行,打印right

这是已知的字符串

写脚本

str1 = 'MSAWB~FXZ:J:`tQJ"N@ bpdd}8g'
str2 = ''
for i in range(len(str1)):
    str2 += chr(i ^ ord(str1[i]))
print(str2)


\\MRCTF{@_R3@1ly_E2_R3verse!}

[MRCTF2020]hello_world_go

BUUCTF在线评测 (buuoj.cn)

查壳,无壳,64位elf文件

ida打开是go语言写的,shift+F12看字符串

ctrl+F搜索字符串,得到flag

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值