我如何检查 base64 字符串是否是文件(什么类型?)?

2024-03-30

我参加了 Spentalkux 挑战https://2020.ractf.co.uk/ https://2020.ractf.co.uk/。 这是我第一次参加CTF挑战,所以我解决了https://github.com/W3rni0/RACTF_2020/blob/master/readme.md#spentalkux https://github.com/W3rni0/RACTF_2020/blob/master/readme.md#spentalkux

当我收到这个 base64 字符串时:

JA2HGSKBJI4DSZ2WGRAS6KZRLJKVEYKFJFAWSOCTNNTFCKZRF5HTGZRXJV2EKQTGJVTXUOLSIMXWI2KYNVEUCNLIKN5HK3RTJBHGIQTCM5RHIVSQGJ3C6MRLJRXXOTJYGM3XORSIJN4FUYTNIU4XAULGONGE6YLJJRAUYODLOZEWWNCNIJWWCMJXOVTEQULCJFFEGWDPK5HFUWSLI5IFOQRVKFWGU5SYJF2VQT3NNUYFGZ2MNF4EU5ZYJBJEGOCUMJWXUN3YGVSUS43QPFYGCWSIKNLWE2RYMNAWQZDKNRUTEV2VNNJDC43WGJSFU3LXLBUFU3CENZEWGQ3MGBDXS4SGLA3GMS3LIJCUEVCCONYSWOLVLEZEKY3VM4ZFEZRQPB2GCSTMJZSFSSTVPBVFAOLLMNSDCTCPK4XWMUKYORRDC43EGNTFGVCHLBDFI6BTKVVGMR2GPA3HKSSHNJSUSQKBIE

我不知道如何检查它是否是一个文件,但解算器说它是一个 gz 压缩数据文件。

你能帮我吗?详细信息在这里 https://i.stack.imgur.com/QRCde.png

文件链接:https://github.com/W3rni0/RACTF_2020/blob/master/assets/files/Spentalkux.gz https://github.com/W3rni0/RACTF_2020/blob/master/assets/files/Spentalkux.gz


许多文件类型都有一个标头(文件的前几个字节),其中包含一些固定信息,通过这些信息可以将文件识别为 gz、png、pdf 等。

因此,每个 Base64 编码的 gz 文件也将以特定的 Base64 字符序列开头,通过该序列可以识别该文件。

A gzip 文件 https://en.wikipedia.org/wiki/Gzip始终以两个字节序列 0x1f 0x1b 开头,在 Base64 编码中为H4加上范围内的第三个字符s to v.

原因是,每个 Base64 字符代表原始字节的 6 位,因此这两个字节0x1f 0x1b使用两个 Base64 字符(12 位)加上第三个字符的前 4 位进行编码。

基于此,我想说您在那里显示的不是 base64 编码的 gzip。

其他例子有:

  • png https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header

    以。。开始:0x89 0x50 0x4e 0x47 0x0d 0x0a 0x1a 0x0a

    Base64 编码:iVBORw0KGg...

  • jpg https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format#File_format_structure

    以。。开始:0xFF 0xD8 0xFF 0xD0

    Base64 编码:/9j/4...

  • gif https://en.wikipedia.org/wiki/GIF#File_format

    以。。开始:GIF

    Base64 编码:R0lG

  • tif http://fileformats.archiveteam.org/wiki/TIFF#Identification

    a) 小端: 以。。开始:0x49 0x49 0x2A 0x00

    Base64 编码:SUkqA

    b)大端: 以。。开始:0x4D 0x4D 0x00 0x2A

    Base64 编码:TU0AK

  • flv https://en.wikipedia.org/wiki/Flash_Video

    以。。开始FLV

    Base64 编码:RkxW

  • wav/avi/webp 等

    几种音频/视频/图像/图形格式基于RIFF(资源交换格式) https://en.wikipedia.org/wiki/Resource_Interchange_File_Format共同的部分是所有文件都以RIFF

    Base64 编码:UklGR

    之后RIFFheader 中,您会发现从第 9 个字节开始的 4 个字节开始的特定格式。 在下面的_用作任何字符的占位符。

    wav https://en.wikipedia.org/wiki/WAV
    以。。开始:RIFF____WAVEBase64 编码:UklGR______XQVZF

    webp https://en.wikipedia.org/wiki/WebP
    以。。开始:RIFF____WEBPBase64 编码:UklGR______XRUJQ

    avi https://en.wikipedia.org/wiki/Audio_Video_Interleave
    以。。开始:RIFF____AVI Base64 编码:UklGR______BVkkg


关于问题中的具体例子:

在更新的问题中,附图中有一个提示

数据是第一位的Base32 编码 https://en.wikipedia.org/wiki/Base32然后进行base64编码。

当我们喂养一个在线base32解码器 https://emn178.github.io/online-tools/base32_decode.html与问题中给出的字符串(JA2HGSKBJI4DSZ2WGRAS...),我们得到:

H4sIAJ89gV4A/+1ZURaEIAi8SkfQ+1/O3f7MtEBfMgz9rC/diXmIA5hSzun3HNdBbgbtVP2v/2+LowM837wFHKxZbmE9pQfsLOaiLAL8kvIk4MBma17ufHQbIJCXoWNZZKGPWB5QljvXIuXOmm0SgLixJw8HRC8Tbmz7x5eIspypaZHSWbj8cAhdjli2WUkR1sv2dZmwXhZlDnIcCl0GyrFX6fKkBEBTBsq+9uY2Ecug2Rf0xtaJlNdYJuxjP9kcd1LOW/fQXtb1sd3fSTGXFTx3UjfGFx6uJGjeIAAA

它开始于H4s,所以根据我写的关于如何识别base64编码中的文件类型的内容,它是一个base64编码的gzip文件。

这可以保存在文本文件中,然后上传到base64decode.org https://www.base64decode.org/它将被转换为 gzip 文件。当您下载并打开该 gzip 文件时,它包含一个文本如下的文件:

00110000 00110000 00110001 00110001 00110000 00110001 00110000 00110000 00100000 00110000 00110000 00110001 00110001 00110000 00110001 00110000 00110001 00100000 ...

此案例的结论:原始字符串/文件是一个 gzip 文件,首先进行 Base64 编码,然后将 Base64 编码部分再次使用 Base32 进行编码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何检查 base64 字符串是否是文件(什么类型?)? 的相关文章

  • Base64 值不是有效图像

    对于电子商务 我需要从 SOAP Web 服务获取产品图像 Web 服务的图像以 base64 编码 在我这边 我必须解码它们以将它们保存在 WordPress 目录中 我的所有代码都有效 即使它远非完美 唯一的问题是我无法从下面的 SOA
  • Ruby 1.9 Base64 编码写入文件错误

    我收到以下错误 Encoding UndefinedConversionError x81 from ASCII 8BIT to UTF 8 下面的内容都在 Ruby 1 8 7 中工作 所以我认为这与 Ruby 1 9 处理编码的方式有关
  • 使用javascript将Base64转换为图像文件

    有谁知道我可以使用任何简单的javascript将base64字符串转换为图像 最好是jpg格式 以便我可以将图像保存到文件中 这是针对签名板应用程序的 我可以将签名转换为 base64 格式 但需要将签名另存为图像文件以用于嵌入到 Cry
  • JavaScript 生成 dataURL 格式的透明 1X1 像素

    我想知道一种在 JavaScript 中生成单个像素并将其转换为 base64 的方法 理想的函数是 function createPixel hexColor opacity Calculate return base64DataURL
  • 如何解码/重新创建 Google Flights 搜索网址?

    问题 On 谷歌航班 http www google com travel flights 搜索信息被编码在 URL 参数中 这样用户就可以轻松地彼此共享航班搜索 URL 格式如下所示 https www google com travel
  • 如何抑制有关 Sun 专有 API 的 java 编译器警告 [重复]

    这个问题在这里已经有答案了 我正在使用 sun misc BASE64Encoder 包中的encode 方法 如何抑制它生成的编译器警告 sun misc BASE64Encoder 是 Sun 专有 API 可能会在 作为后续 为什么我
  • 在 Raspberry Pi 中解码视频而不使用 OpenMAX?

    我正在寻找在 Raspberry Pi 上解码视频的示例directly 不使用 OpenMAX 这解释了多媒体软件的不同层 还有一个此处未显示的附加层 即 MMAL https github com raspberrypi userlan
  • 如何在 HTML 文件中重复使用 Base64 图像

    我有一个可移植的 HTML 文件 可以分发给客户 它有一个文档索引 我想要每个文档都有一个 PDF 或 Word 图标 但如果可以避免的话 我不想重复 Base64 字符串 30 次 我该怎么做 Javascript 还可以 但我的目标是简
  • 将base64图像上传到亚马逊s3

    我在尝试将图像上传到 AWS S3 时遇到一些问题 似乎可以正确上传文件 但是每当我尝试下载或预览时 它都无法打开 目前 这是我正在使用的上传代码
  • CryptoJS.enc.Base64.stringify() 和普通 Base64 加密的区别

    我正在尝试将以下哈希加密为 Base64 6bb984727b8c8c8017207e54b63976dc42ea9d24ad33bd5feeaa66869b650096 需要访问网站的API 该网站显示了一个 JavaScript 示例脚
  • 如何在 Node.js 中进行 Base64 编码?

    Node js 是否有内置 Base64 编码 我问这个的原因是final from crypto只能输出十六进制 二进制或ASCII数据 例如 var cipher crypto createCipheriv des ede3 cbc e
  • 确定 Base64 字符串或缓冲区是否包含没有元数据的 JPEG 或 PNG?可能的?

    有没有办法使用节点来做到这一点 无论是本机还是通过插件 我想要完成的是根据输入类型选择无损或有损图像压缩 对大型 JPEG 进行无损存储是一场存储灾难 PNG 文件的前八个字节始终包含以下值 请参阅PNG规格 http www libpng
  • 在 JavaScript 中从 Base64 字符串创建 BLOB

    我在字符串中有 Base64 编码的二进制数据 const contentType image png const b64Data iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQV
  • 处理大文件或多个文件时 file_put_contents 太慢

    我在用文件放置内容创建视频文件 问题是速度和性能 创建平均大小为 50 mb 的文件平均需要大约 30 到 60 分钟 而且这还只是一个文件 我正在解码字节数组以创建文件 如何提高速度和性能 json str file get conten
  • 将base64转换为base62(不含特殊字符)

    我想在 URL 中传递河豚加密字符串 并希望像 base64 一样对其进行编码 但没有任何特殊字符 像 base62 这样的东西就很好 0 9a zA Z 所以我想做的是使用base64 encode 转换河豚加密字符串 并将base64
  • 适用于 .NET 的最快 PNG 解码器

    我们的网络服务器需要先处理许多大图像的组合 然后再将结果发送到网络客户端 此过程对性能至关重要 因为服务器每小时可以接收数千个请求 现在 我们的解决方案从 HD 加载 PNG 文件 每个大约 1MB 并将它们发送到显卡 以便在 GPU 上完
  • Facebook Stream.publish 带有来自 Base64 的图像附件

    我正在尝试让 facebook 的stream publish 制作一个墙贴 其中包含一些自定义文本和从该网站动态生成的图像 该图像仅以 Base64 形式提供 因为它是由用户在启动发布操作之前绘制的 Facebook 似乎不喜欢 src
  • 将字节字符串转换为 Base64 编码的字符串(输出不是字节字符串)

    我想知道是否可以将从读取文件中获得的字节字符串转换为字符串 所以type output str 到目前为止我在谷歌上找到的都是这样的答案如何对 PNG 图像进行 Base 64 编码以便在 CSS 文件的 data uri 中使用 http
  • Nodejs Base64 中的读取文件

    我正在尝试从客户端读取以 base64 编码的图像 如何使用nodejs进行阅读 My code add to buffer base64 image var encondedImage new Buffer image name base
  • 生成 CloudFront 签名 URL 时性能缓慢

    我正在按照此示例使用 PHP 在 CloudFront 上创建签名 URLhttp docs aws amazon com AmazonCloudFront latest DeveloperGuide CreateURL PHP html

随机推荐