攻防世界逆向高手题之Replace

攻防世界逆向挑战:Replace题目解析与解题技巧
本文详细介绍了攻防世界逆向高手题Replace的解题过程,包括使用exeinfope、ida32进行分析,通过dump数组、编写逆向逻辑脚本来爆破和理解移位运算符的用法。关键步骤包括确定Flag长度、反推字符、理解加密算法,并提供了两个不同方法的解题脚本,最终成功还原出Flag。

攻防世界逆向高手题之Replace

继续开启全栈梦想之逆向之旅~
这题是攻防世界逆向高手题的Replace
在这里插入图片描述
下载附件,照例扔入exeinfope中查看信息:
在这里插入图片描述
.
有壳,用Kali的upx -d脱壳,然后照例扔入IDA32中查看伪代码,有main函数看main函数:(脱壳后不能运行,因为伪代码信息足够,所以就不用修复了)
在这里插入图片描述
.
.
代码量很少,第一个红框不知道要输入35还是36还是37,直接看第二个红框的判断语句:
在这里插入图片描述
.
.
主要逻辑在上面了,涉及三个数组,用IDA内嵌脚本dump下来,这里积累第一个经验:数组dump下载的时候dump到0字符结尾处,不要怕dump多,就怕dump少。

addr1=0x402150
addr2=0x402151
addr3=0x4021A0
list1=[]
list2=[]
list3=[]
for i in range(0x402196-0x402150):
    list1.append(Byte(addr1+i))
for i in range(0x402196-0x402151):
    list2.append(Byte(addr2+i))
for i in range(0x4022D8-0x4021A0):
    list3.append(Byte(addr3+i))
print(list1)
print(list2)
print(list3)

.
.
在这里插入图片描述
.
.
开始编写逆向逻辑脚本,这里积累第二个经验:主要回顾一下每一步的思路,给日后自己增添一些解题模板。
.
第一步确定Flag字符数量,第一个红框处得到flag数量是35。

第二步找到已确定的字符串作为基点来反推flag字符,如第二个红框处。
在这里插入图片描述
.
第三步找出逻辑中与flag直接相关的部分,该部分可以正向爆破或者从尾到头的反向逻辑,如第一个红框所示。然后找到与flag没有直接关联的部分,该部分无需逆向逻辑,直接正向流程复现即可,如第二个红框所示。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

沐一 · 林

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

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

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

打赏作者

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

抵扣说明:

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

余额充值