bugku逆向love

题目来源:bugku逆向love
拿到题目拖进ida反编译,f5查看伪函数。
bugku逆向love_第1张图片
我们先shift+f12查看可疑字符串
bugku逆向love_第2张图片
我们发现这里有一个base64input,可能会和base64加密解密有关。

我们先来分析一下这个函数的构成,从输入flag那里开始分析,这个函数可以分为两部分
bugku逆向love_第3张图片
bugku逆向love_第4张图片
第一部分比较难搞,只认识strncpy,这个是复制函数,将v2字符串复制到dest中,上面做了什么先不管,因为第二部分的函数很好懂,我们可以先处理这一部分先。if里的strncmp是一个比较函数,两个字符串比较,如果相等则输出0,但此时前面带了个!(非),所以意味着字符串相等,则输出rigth flag!。接着我们可以点击str2,查看这是个什么字符串。
bugku逆向love_第5张图片
这个字符串是e3nifIH9b_C@n@dH。我们先反解这第二个函数,这个函数很好反解出来,先得将这一串字符串转化为ascall码,然后每一个值减去相应的顺序,在转化为相应的字符

#py -3
#coding:utf-8
a = "e3nifIH9b_C@n@dH"
flag =''
for i in range(len(a)):
    flag += chr(ord(a[i])-i)
print(flag)    

解得 e2lfbDB2ZV95b3V9
因为上面有base64input,所以我尝试了base64解码,发现flag就出来了
{i_l0ve_you}
当然我们还得搞得为什么会是base64解码,可能下一次就不是base64加密了。
这样意味着第一段函数便是base64加密了。
我们可以使用od打开程序。找到wrong flag所在地址
bugku逆向love_第6张图片
向上翻我们可以发现标志的两个函数,复制和比较
bugku逆向love_第7张图片
这时我们测试第一个函数,于是我们在复制函数处断点,然后运行程序。然后我们输入flag:aaaaaaaaaaaaaa。
bugku逆向love_第8张图片
此时我们可以在右下角发现base64位加密的关键证明
bugku逆向love_第9张图片
将aaaaaaaaaaaaaabase64加密正好是这一串字母。
这时更能证明flag便是{i_l0ve_you}

你可能感兴趣的:(bugku逆向love)