Hex解码与Base16解码的关系(以web第一题为例)

完成第一题的基本步骤后,得到一串奇怪的编码:

48454354467b796f755f6172655f676f6f647d

为了得到答案,需要进行解密
首先,观察一下这串字符,发现由数字和小写英文字母组成。
【我解题时使用的是base16解码,而官方wp给出的是Hex解码】
经试验,两种解码方式均可得到flag
如图:
Base16解码
Hex解码那么为什么呢?
我们先来看看其他人给的定义:【ps:我做题的时候搜到的,当时因为这个点感到很困惑】

Base16编码就是将ASCII字符集中可打印的字符(数字0-9,字母A-F)对应的二进制字节数据进行编码的方式

1.将数据(根据ASCII编码,UTF-8编码等)转成对应的二进制数,不足8比特位高位补0.然后将所有的二进制全部串起来,4个二进制位为一组,转化成对应十进制数.

2.根据十进制数值找到Base16编码表里面对应的字符.Base16是4个比特位表示一个字符,所以原始是1个字节(8个比特位)刚好可以分成两组,也就是说原先如果使用ASCII编码后的一个字符,现在转化成两个字符.数据量是原先的2倍.

【附上原文链接:https://blog.csdn.net/lili13897741554/article/details/82177472(引用的他人解释,但是觉得不太对??【为什么没有小写字母呢?毕竟本文中就是解码出了小写字母】)】->事实证明并不靠谱

Hex编码就是把一个8位的字节数据用两个十六进制数展示出来,编码时,将8位二进制码重新分组成两个4位的字节,其中一个字节的低4位是原字节的高四位,另一个字节的低4位是原数据的低4位,高4位都补0,然后输出这两个字节对应十六进制数字作为编码。Hex编码后的长度是源数据的2倍

很好,不太能理解,现在让我们找一些例子:

1、base16

由前面的定义来看,base16编码貌似只适用于数字0-9,字母A-F。
先试验一下:
将字母:

HECTF编码 得到4845435446

则H->48 E->45 C->43 T->54 F->46
没有问题

那么根据本题的语境,让我们来试一下‘{’ 和 ‘}’能否使用base16编码叭

{ 编码得到7B,} 编码得到7D

从这里可以看出,base16也可以将 { 和 }编码

以 { 为例:{ 对应ASCII码值为123,转换为二进制即为:0111 1011,以四比特分为两部分,第一部分对照值为7,第二部分为12,经过base16编码便为7B【但同时,这里发现 { 的十六进制数也为7B】

再试一下大小写字母的区别吧:

B编码得到42,b编码得到62

从这里,我们又能发现小写字母也是可以进行base16编码的

但是得到的flag中含good,其中o的范围也超出了原本base16的定义,我们再来试一试:

o编码得到6F

看来超出规定范围的字母也可以被编码

分析到这里,我们可以发现我搜到的定义好像不太靠谱,因为就我们得到的结论来看,Base16可以对上文中的定义范围外的字符编码。反而,我们分析得到的结论和过程可以发现,base16编码得到的字符的范围和定义中的相符:数字0-9,字母A-F。

于是,另一个新的问题产生了:我们本次题目的flag解码前,是由数字和小写字母组成的,
试一下用base16编码一下我们的flag: HECTF{you_are_good}
得到
48454354467B796F755F6172655F676F6F647D20

可以清晰的发现,由base16编码的flag得到的值也全都是大写。

那么为什么我依旧可以得到结果呢?可以试验一下使用base16来解码7B796F755F6172655F676F6F647D20
得到{you_are_good}

再试一下小写7b796f755f6172655f676f6f647d,
得到{you_are_good}

2、hex

这下就很好理解hex编码解码了,我们来试验几组就行啦!

解码7B796F755F6172655F676F6F647D20
得到{you_are_good}
解码48454354467b796f755f6172655f676f6f647d
得到HECTF{you_are_good}

这种情况看起来和base16很类似呀

那么它们有什么关系嘞:

Base16(hexadecimal)是一种16进制数字系统,使用16个不同的符号来表示数字0-15.这16种符号通常是数字0-9字母A-F(或a-f)
而Hex解码是将Base16编码转换回二进制数据的过程

【实际上,我会产生这些疑惑的原因是我对这些编码方式完全不了解,希望以后能多学习一下,在有一定了解的基础下,分析被加密的字符也会更得心应手叭】

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值