buuctf reverse3
拖进IDA:
f5反汇编可以看到伪代码
可以看到首先我们输入的值保存到str,这里的scanf是我为了方便阅读使用快捷键n对原有的函数进行的重命名
然后将我们输入的值通过sub_4110BE这个函数进行加密,加密的返回结果保存在v4,紧接着将v4通过strncpy函数传给Destination函数,下面的for循环又对Destination进行一个简单的加密,将Destination每一位加上下标本身再和str2比较。

进入sub_4110BE函数内部

看不懂,总之就是什么加密算法,
通过shift+f12查看所有字符串

可以看见很明显是base64加密,加密过程我们不用管,直接去找str2的字符串,因为在base64加密后,下面还有个小的加密步骤,只需要解开那个小的加密步骤就行

现在知道了str2的字符串,就可以编写脚本了。
import base64
a = "e3nifIH9b_C@n@dH"
flag = ''
for j in range(len(a)):
flag += chr(ord(a[j]) - j)
print(base64.standard_b64decode(flag))
base64的解密用python库解就好了,我们就将字符串还原成加了下标之前的字符串就行。
运行后的结果:
'{i_l0ve_you}'
(仅为个人学习记录,如有错误,欢迎指正)

浙公网安备 33010602011771号