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做了大量视频和大量免费教育和网络广播,我希望在不久的将来在其中一个视频或网络广播中见到你。非常感谢,保重。