BugkuCTF-Reverse题love

博客详细介绍了如何通过逆向工程分析一个程序,找出其内部的Base64加密字符串并进行解密。作者使用IDA分析工具,发现程序对输入字符串进行特定加密后与预设的密文比较。解密过程涉及对给定字符串进行Base64解码并减去每个字符的下标。最终,通过编写解密脚本,成功解出flag。
摘要由CSDN通过智能技术生成

下载附件
先查壳
在这里插入图片描述
发现没加壳

再拖进 IDA 分析
按shift+F12查找字符串,可以看到如下 Base64 加密的痕迹,可判断基本是一个反解 flag 的题目
在这里插入图片描述
找到主函数按F5查看伪代码,如下:
在这里插入图片描述
可以发现这样的一个关键函数,也就是会将 Destination 与 Str2 进行比较,如果正确为right
分析可知:将输入的串Str1先进行base64加密 再与串Str2比较 若相等 则输出"right flag"
由此,我们只需将Str2也就是"e3nifIH9b_C@n@dH"进行解密即可
在这里插入图片描述
将str2和Dest相比较,而Dest为取V4的前长度0x28u的字符
V4的值来自sub_4110BE
Sub_4110BE取自sub_411AB0
Dest由v4而来,v4会通过base64加密,然后对Dest做了第2次的加密,v11为Dest的长度

而 Destination 是通过对输入的内容进行一连串变化之后得到的,str2是给出的
首先输入的东西通过 sub_4110BE 这个函数进行加密,得到初步的结果,跟进看看这个函数
点开加密函数:
在这里插入图片描述
关键语句就在这里 我们可以看到是算输入的字符按三个一组能分为几组 然后将这个数字乘上4
我们很容易想到是base64加密 因为和base64加密的过程太像了
看一下它的变换数组:
在这里插入图片描述

完整函数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关键部分:
在这里插入图片描述
aAbcdefghijklmn 即:
在这里插入图片描述
可见输入内容先经过 sub_4110BE 这个函数进行 base64 加密,然后各位加上下标本身,再与 str2 比较
而str2的值为 “e3nifIH9b_C@n@dH”
在这里插入图片描述
编写解密脚本

import base64
str = "e3nifIH9b_C@n@dH"
f = ''
flag = ''
for i in range(len(str)):
	f += chr(ord(str[i])-i)
flag = base64.b64decode(f)
print(flag)

在这里插入图片描述
得到flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值