[攻防世界]crypto新手练习区base64

6 篇文章 1 订阅

[攻防世界]crypto新手练习区base64

base64 最佳Writeup由Um0 • Umo.提供

难度系数: 1.0

题目来源: poxlove3

题目描述:元宵节灯谜是一种古老的传统民间观灯猜谜的习俗。 因为谜语能启迪智慧又饶有兴趣,灯谜增添节日气氛,是一项很有趣的活动。 你也很喜欢这个游戏,这不,今年元宵节,心里有个黑客梦的你,约上你青梅竹马的好伙伴小鱼, 来到了cyberpeace的攻防世界猜谜大会,也想着一展身手。 你们一起来到了小孩子叽叽喳喳吵吵闹闹的地方,你俩抬头一看,上面的大红灯笼上写着一些奇奇怪怪的 字符串,小鱼正纳闷呢,你神秘一笑,我知道这是什么了。

题目场景: 暂无

题目附件: 附件1

附件内容:

Y3liZXJwZWFjZXtXZWxjb21lX3RvX25ld19Xb3JsZCF9

解题

拿到附件内容是一串字母和数字的组合,结尾并没有明显的填补符号=,但是这种格式和题目tiltle暗示要尝试进行base64解码解密。

可以选择在线解密

https://base64.us/

http://tool.chinaz.com/Tools/Base64.aspx

输入内容后,立即拿到了flag,完成解题。

cyberpeace{Welcome_to_new_World!}

 

代码的实现

博主也找了base64解密相关的代码实现,如下。

Java版本,可以直接导入java.util.Base64;库文件,调用getDecoder()方法,用decode();解码。

Golang版本,调用系统库

package main

import (
	"encoding/base64"
	"fmt"
)

func BaseEncodeFunc(str string)(string) {
    data := base64.StdEncoding.EncodeToString([]byte(str))
    return data
}

func BaseDecodeFunc(str string)(string,error) {
    data, err := base64.StdEncoding.DecodeString(str)
    if err != nil {
	    return "",err
    }
    return string(data),nil
}

func main() {
    str := "Y3liZXJwZWFjZXtXZWxjb21lX3RvX25ld19Xb3JsZCF9"
    data, err := BaseDecodeFunc(str)
    if err != nil {
        fmt.Println("error:", err)
    }
    fmt.Printf("解码前=====%q\n", str)
    fmt.Printf("解码后=====%q\n", data)
}

python


import base64
from io import BytesIO

print(base64.decodestring("Y3liZXJwZWFjZXtXZWxjb21lX3RvX25ld19Xb3JsZCF9"))

什么是Base64呢(百度百科)

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。

Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,需要解码后才能阅读。

Base64由于以上优点被广泛应用于计算机的各个领域,然而由于输出内容中包括两个以上“符号类”字符(+, /, =),不同的应用场景又分别研制了Base64的各种“变种”。为统一和规范化Base64的输出,Base62x被视为无符号化的改进版本。

博主认为对于base64的变种来说,就是转换表和填充符号的区别,基本原理都是大同小异的。所以拿到编码后,要搞清楚转换表才是关键。

 

附录:

https://baike.baidu.com/item/base64/8545775?fr=aladdin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byzf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值