roger 发表于 2021-3-11 11:44:42

DDCTF_2019_re_reverse2_final

查壳发现是ASPack壳,我用工具脱没脱下来,只好手动脱,根据栈平衡可以顺利找到eop,然后从内存中dump下来,载入IDA中,找到关键函数:sub_4011F0函数验证了用户输出的合法性,然后再经过sub_401240和sub_401C6A处理,再和正确字符串相比较

验证合法性的函数很简单,限制了0-9,A-F

接下来看数据处理函数,静态分析后也没明白是干什么的,通过交叉引用函数,发现sub_401000存在base64算法,但是这道题把索引表给隐藏起来了,题目所提供的索引表和0x76异或之后构成base64的索引表动态调试的时候,我们输入123456789A的时候,发现sub_401000返回了一串字符串:

更加确定这个是base64加密了,解密发现,这个题目是将我门输入的字符串直接转成了数据

1
2
import base64
print base64.b64decode("EjRWeJo=").encode("hex")


所以我们直接将正确字符串base64解密即可得到flag:
1
2
import base64
print "DDCTF{"+base64.b64decode("reverse+").encode("hex").upper()+"}"

flag:DDCTF{ADEBDEAEC7BE}
页: [1]
查看完整版本: DDCTF_2019_re_reverse2_final