攻防世界-reverse-logmein

题目描述:菜鸡开始接触一些基本的算法逆向了

下载附件,是一个可执行程序

1. 思路分析

逆向出来看看代码

 

从代码中来看,密码长度需要和V8相等,并且每一个字符的运算结果需要满足 s[i] == (char)(v8[i % v6 - 8] ^ v8[i])  

但是这里有个问题,那就是v8[i % v6 - 8],v6是等于7的,再减去8实际上超出了数组的下标,这里我们注意到v7和v8在内存中是连续的,v7刚好在v8的前面,因此这里的值实际上指向的是v7。

 

 v8的值为    :\"AL_RT^L*.?+6/46,共17个字符,v7值为ebmarah,只有8个字符(最后一个为空字符),根据代码逻辑,将v7循环补齐到17个字符为harambeharambehara(这里注意v7是小端模式,所以需要反向比较),然后再进行异或操作即可

2. 解题过程

根据以上分析写出如下代码进行操作:

str1 = ':\"AL_RT^L*.?+6/46'
str2 = 'harambeharambehar'

# 获取字符串 "str2" 的长度作为参考
length = len(str2)

print(len(str1))
print(len(str2))

output = ""
for i in range(len(str2)):
    output += chr(ord(str1[i]) ^ ord(str2[i]))

print(output)

运行后得到结果为:RC3-2016-XORISGUD

总结:这道题除了基本的逆向外,还需要分析flag的计算方式(一定要记住这里面存在小端模式的坑!!!),清楚这些后,简单转换下即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值