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}'

(仅为个人学习记录,如有错误,欢迎指正)

posted @ 2022-11-30 11:57  一个半  阅读(98)  评论(0)    收藏  举报