BUUCTF-[2019红帽杯]easyRE

题目下载:easyRE

拖入IDA,shift+f12找到关键字符串双击“You found me!!!”

点红线2处的函数,在f5查看伪代码,伪代码可以分为两部分,首先看第一部分

红线处为关键代码,由此可求出input1数组,

input1=''
v12='73 111 100 108 62 81 110 98 40 111 99 121 127 121 46 105 127 100 96 51 119 125 119 101 107 57 123 105 121 61 126 121 76 64 69 67'.split(' ')
for i in range(len(v12)):
    input1+=chr(int(v12[i])^i)
print(input1)

#输出为Info:The first four chars are `flag`

所以可以知道答案前四个字符为flag

看伪代码第二部分将input2进行十次base64编码,然后和off_6CC090比较,通过off_6CC090数组(数据双击即可查看)反向十次base64解码获得input2,为网址https://bbs.pediy.com/thread-254172.htm,进入是

发现不对,所以解题方向错了 ,重新观察发现在观察off_6CC090时有其他的数据双击这个函数查看伪代码发现if处代码为关键,并且出现的f,g两个字符会不会是flag的f,g呢?在通过上上个截图观察byte_6CC0A0[0]与byte_6CC0A3正好中间差两个数据,更加确定f,g是flag的f,g。既然知道v4数组和byte_6CC0A0数组前四个异或得到字符‘flag’,则可求V4数组,知道v4数组在根据for循环写代码可获得flag

#求v4数组
str1='flag'
v4=''
str2=[0x40, 0x35, 0x20, 0x56, 0x5D, 0x18, 0x22, 0x45, 0x17, 0x2F, 
  0x24, 0x6E, 0x62, 0x3C, 0x27, 0x54, 0x48, 0x6C, 0x24, 0x6E, 
  0x72, 0x3C, 0x32, 0x45, 0x5B]
for i in range(4):
    v4+=chr(ord(str1[i])^str2[i])
#求flag
flag=''
for i in range(len(str2)):
    flag+=chr(ord(v4[i%4])^str2[i])
print(flag)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值