Base64编码与解码入门指南
大家好,欢迎观看。我是John Strand,在本视频中,我们将讨论Base64编码和解码。我们再次为客户和朋友提供了BHIS网络靶场,这个视频主要是为了引导大家完成一些利用Base64的挑战。
Base64存在的原因其实很有趣。每当你传输二进制数据或包含特殊字符的数据时,尤其是在处理主要为发送文本而设计的协议时,数据可能会被编码和混淆。例如,像HTTP这样的协议传输大量文本,如果我们开始发送二进制数据,可能会遇到麻烦。事实上,我们经常看到这种情况,尤其是在像SQL注入这样的攻击中,分号被解释并执行。
这就是为什么存在这样的协议或不同的编码格式。它允许你将二进制和特殊字符数据转换为更无害的形式,如大小写字母和数字,这就是我们在使用Base64作为编码机制时实际得到的东西。在进行Web应用程序安全评估、查看安全参数和令牌等时,你会经常看到它。让我们稍微玩一下Base64的编码和解码,以及你将遇到的一些小挑战。
在我的屏幕上的示例中,我们将处理“I am sure there’s a better way to do this434343!!!!!!”或十六进制的大写C、大写C、大写C,但我们还没有到那个视频。我们将通过Base64管道传输它。这将对其进行编码。如你所见,我们有“I am sure”和空格,所有这些都被看起来像乱码的东西取代,但它基本上不是恶意的乱码,或者我认为大部分不是恶意的乱码。它允许以易于通过明文或纯文本协议传输的方式编码。
你会注意到的一件事是,有时Base64很多时候会以“等于等于”结尾,这与填充有关。如果你的字符集没有完全落在Base64寻找的边界上,它实际上会填充它。很多时候,一个明显的迹象是结尾的一个或两个等号。
有时可能没有任何等号。那会发生。这意味着文本落在了完美的边界上,这没关系,但只是需要注意的事情。这是一个快速而肮脏的技巧。
如果我们想解码Base64编码的数据,我们实际上可以做到。让我跳出来,我将直接使用Base64解码。我使用了一个开关,这里你可以看到我使用了–decode开关。现在每当我按回车键时,它会尝试解码,并且会出错。你可以在这里看到它说“I’m sure there is a”,然后它说啊!Base64无效输入。原因是我在Base64编码字符串中间偷偷加入了一些特殊字符。
为什么会有人这样做呢?
嗯,很多恶意软件实际上使用Base64。原因是在可执行文件中进行签名模式匹配时,非常微小的变化实际上可以以更显著的方式改变签名。
一些狡猾的攻击者会在他们的Base64编码流中插入特殊字符。这样做,任何使用深度包检查来分析该Base64编码数据的防火墙或IDS都会开始抛出错误。基本上会说,嗯,这里有问题。
如果你处理一个包含Base64并抛出一些特殊字符的字符串,你可以使用-i开关,-i开关的作用是告诉Base64忽略垃圾。你将解码这个Base64编码的字符串。
如果你遇到一些你不完全理解的东西,别担心。忽略它。假装它从未存在过。假装它从未发生过。如你所见,它实际上大大清理了输出。
再次,这在Black Hills Information Security网络靶场中使用,如果你喜欢Base64编码和解码数据,谢谢。每周三在Enterprise Security Weekly上查看我们,并确保点击下方的订阅按钮。我们在Black Hills InfoSec做了大量的视频和大量的免费教育和网络广播,我希望在不久的将来在我们的一个视频或网络广播中见到你。非常感谢,保重。