攻防世界逆向高手题之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没有直接关联的部分,该部分无需逆向逻辑,直接正向流程复现即可,如第二个红框所示。
攻防世界逆向挑战:Replace题目解析与解题技巧

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

被折叠的 条评论
为什么被折叠?



