base64编解码的学习与例题

base64:

base64是一种编解码技术,编码时,把原数据以ascii码形式转换为二进制顺序排列,然后按照6个bit为一个间隔重新划分,这些重新划分出来的数据有对应的base64编码表,将它们按照编码表翻译后就得到了base64编码形式的数据了。

如果原数据不能正好划分,就在待转换数据结尾补0。

编码对照表:加粗样式

例题1:

做完发现,这个是buuctf的reverse3(
无壳,而且是32位程序。
在这里插入图片描述

用IDApro打开,F5转成c语言,一眼看到下面的right flag:

在这里插入图片描述
在这里插入图片描述

先找到Str2,是这样一串数据:

在这里插入图片描述
再往上看,sub_411375把输入存到Str里,第27行又把Str存到v2里了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/b199fd93bb4543adbffbe641c7e343eb.pn

最后,Dest经过如下转换,就进行了开头第一眼看到的与str2比较的操作。
在这里插入图片描述
既然流程搞清楚了,直接反着来就行,把Str2里的数据转换成最初的数据,
在这里插入图片描述
然后经过base64解码得到答案:
flag{i_l0ve_you}

例题2:

查壳发现无壳,64位。
在这里插入图片描述
先看一下字符串:
在这里插入图片描述
通过“The flag is right!!!”找到了主函数:
在这里插入图片描述
本来对c++就半懂不懂的,这一大串属实给我看迷糊了,猪脑过载了半天。
大概过程就是输入的字符串经过运算最后存入result,和rightFight中的内容进行比较。
中间唯一和result有关的就是base64Encode函数,打开看一看:
在这里插入图片描述
点开unk_489084看一下:
在这里插入图片描述
看到了这段字符串,
所以这题是把编码表改变了,
用这段字符串替换原编码表得出结果:
flag{Special_Base64_By_Lich}
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值