谈谈base中遇到的坑点 及 其他

其实只是一篇水文,只是想排一下部分坑
有错误希望可以在评论区提出来,别阴阳我就好了,tks。

base58

首先要拿出来说的是base58
很多人初次遇见除base64 base32 base16以外的编码都会去直接搜索,如直接在百度搜索“base58编码”
然后第一个搜索出来的就是一个工具箱。
网站里面提到:
Base58是用于比特币(Bitcoin)中使用的一种独特的编码方式,主要用于产生Bitcoin的钱包地址。 相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+"和"/"符号。比特币的Base58字母表:123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
是,讲的没有问题。也确实是比特币的字母表。你在使用cyberchef的时候也默认用的bitcoin。此外常用的还有Ripple的字母表。
但是在用一个工具箱的时候,很明显会发现编码出来的并不能用cyberchef解。
因为一个工具箱用的码表是短url的码表,即码表是123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ
你可以在在线进制转换中也能见到他。所以一个工具箱虽然从开头到后面举例中都是在谈bitcoin,但他其实根本用的不是bitcoin使用的字母表。

base92

前些天,我在水群的时候有人发了个红包题。啪的一下就点开了很快啊,把所有的base都试过了依旧不能解,出题人说是base92,使用的是bugku的工具加密的,大伙还是解不了。
这就奇怪了,难不成bugku的表也不正确吗?
这里我使用了python中的base92库,需要在py2使用。

import base92
print base92.encode('testbase92')

这是输出:[email protected]+J6B
拿到bugku解试试看呢?
在这里插入图片描述
暂时还没有出现问题。
那么众所周知,一些比赛喜欢把base套娃起来作为签到题,那么如果对明文进行10次base64,再进行5次base85,再用bugku的base92加密一次,得到的结果能被bugku解出来吗?这是base64+base85加密后的结果:
在这里插入图片描述
经过bugku的base92加密之后得到的一长串去解密的结果:
在这里插入图片描述
即使清掉了缓存也还是这个结果,那用python试试?
在这里插入图片描述
好嘛,还是不行。那用python的base92加密之后再去bugku解码呢?
在这里插入图片描述
结果是能解,那他们俩之间到底有什么不一样的地方?(s1为bugku加密,s2为python)

s1 = r'''>U.xN%a]xEZP*[Zp8[j)/^Qn=IQ+y[2N%/P=,4N9rwZSR^A8:px!eb"kq7k}G;EZQFU)]|@Lh(+rAv:$=B(+^%)#[email protected]*DA/R;LOV6X!khWV<ELaPT]P.RrUuOWF;dC2%:n7,yxAAzn|[email protected]:6Zpy:[email protected][1s4r3>FLv3([email protected]^';a-/PoF,(#x63d2GF|6mn'O|>[email protected]:0daM4ii_<[email protected]>sH1)2yPmWhRf[@@?R[;y0][KOpVi9]6/jw696l5)s|+B+ADt`4D3I/[email protected]!:CtOsj3,.LAr'fRzK6'4;R)Z.LT--$LwDx$9?l/HxOgEn2F}-i<$Tr6HPVRo+YOo?Wak;7pK9{/m=]b9_<[email protected]*ac3>F'/3V=hb\[email protected]>6]VZvK/fUW(Zg,=O^[sj-<.{mhY&URD4][email protected])-,+e?%*hTcg/CHtkmLp<[email protected]:a'C8+m=70))Z0_4}iOV).HLB1&"B4oPo9Bpuj6:?F_]M^A$Z^bke%[email protected]}vT1C.&>B*mOgAJin4u*O(y^]SPuHDsG4Py/V"}gPUmUL<)<I%cxPuo5W>%i8X2ha>YZz'iQ'N3DI1GX)Q5V#O?.?MX%6o0Y;jYY$:Q}%]v:_&xn)Z"[email protected]+lImQwoI+V:4O6*UDY<0w.fzUd?bAooP4)=3`4,*^[email protected]$U#3}Ik&;BhYXxASR&HS$A$k>w_'OxV:(+6e<(G4,:0}P{?bC0RfK5&SN%5y:iiR%47&9?05Sk/).HQF<om69}[email protected]/VsHgO)?+a>VT$x'^3t/R$(AAu3b%sYHcvEdTn-,>}17`lsYbt$BUUpmP)Mf`3]Pc'.e?sRedVIk'DR!Z_K'VtBlRW=rkCn81C[[email protected]*A}-c%&a-Xt$0temhj)JST1:<0=VgM,k}?Q.J=kVG[e/tWi(saf72t,6,1RFB[iCX13EYJ'''
s2 = r'''>U.xN%a]xEZP*[Zp8[j)/^Qn=IQ+y[2N%/P=,4N9rwZSR^A8:px!eb!kq7k}G;EZQFU)]|@Lh(+rAv:$=B(+^%)#[email protected]*DA/R;LOV6X!khWV<ELaPT]P.RrUuOWF;dC2%:n7,yxAAzn|[email protected]:6Zpy:[email protected][1s4r3>FLv3([email protected]^';a-/PoF,(#x63d2GF|6mn'O|>[email protected]:0daM4ii_<[email protected]>sH1)2yPmWhRf[@@?R[;y0][KOpVi9]6/jw696l5)s|+B+ADt_4D3I/[email protected]!:CtOsj3,.LAr'fRzK6'4;R)Z.LT--$LwDx$9?l/HxOgEn2F}-i<$Tr6HPVRo+YOo?Wak;7pK9{/m=]b9_<[email protected]*ac3>F'/3V=hb\[email protected]>6]VZvK/fUW(Zg,=O^[sj-<.{mhY&URD4][email protected])-,+e?%*hTcg/CHtkmLp<[email protected]:a'C8+m=70))Z0_4}iOV).HLB1&!B4oPo9Bpuj6:?F_]M^A$Z^bke%[email protected]}vT1C.&>B*mOgAJin4u*O(y^]SPuHDsG4Py/V!}gPUmUL<)<I%cxPuo5W>%i8X2ha>YZz'iQ'N3DI1GX)Q5V#O?.?MX%6o0Y;jYY$:Q}%]v:_&xn)[email protected]+lImQwoI+V:4O6*UDY<0w.fzUd?bAooP4)=3_4,*^[email protected]$U#3}Ik&;BhYXxASR&HS$A$k>w_'OxV:(+6e<(G4,:0}P{?bC0RfK5&SN%5y:iiR%47&9?05Sk/).HQF<om69}[email protected]/VsHgO)?+a>VT$x'^3t/R$(AAu3b%sYHcvEdTn-,>}17_lsYbt$BUUpmP)Mf_3]Pc'.e?sRedVIk'DR!Z_K'VtBlRW=rkCn81C[[email protected]*A}-c%&a-Xt$0temhj)JST1:<0=VgM,k}?Q.J=kVG[e/tWi(saf72t,6,1RFB[iCX13EYJ'''

print("s1 len",len(s1),"tts2 len",len(s2))

for i in range(len(s1)):
    if(s1[i] != s2[i]):
        print(i)

在这里插入图片描述

可以发现,虽然他们长度一样,但是有些地方字母就是不一样,输出看看?
在这里插入图片描述
bugku中的"对应python的!,bugku的`对应python的_
那奇怪了,难道bugku的表对应有问题吗?
在这里插入图片描述在这里插入图片描述

因为看不到具体过程,这里就不继续研究和下结论了。总之在生成的时候请尽量使用base92库。

萌新常见问题:base62

就简单说一下,有些平台的base62解出来是一长串数字,是因为他的base62是指的进制转换。同样可以用base58里面提到的进制转换来转。而一般打CTF说的base62是指的base62编码,即是用62个可打印字符来表示二进制数据。这里还是推荐cyberchef。
此外国外有个平台http://decode-base62.nichabi.com/他使用的base62是自己自创的,采用分组加的方式。在这里插入图片描述

这边建议还是多记住不同平台的避免找不到出题人使用的。毕竟加密是为了好朋友之间互相***,咱就是个中间hacker去拿他信息。

我的二进制开头少个0?

这个问题还算是比较常见的问题,在我去年2月bugku出的题、国外的某场比赛、bamboofox、国内某两场比赛中,都是遇到过这个问题,这是典型的因为最高位为0所以省略掉的。最常见的还是我之前提到的进制转换,他在除最高位以外的地方都是老老实实的8bit,而最高的那里就是没有开头那个0。所以建议如果要用在线网站去转换可以使用cyberchef,总之就是推荐cyberchef。

他的零宽我怎么解不开

我不好说,首先是常见的零宽有四个网站,可以去Tokeii的CTF站点导航找到。
其次有的出题人故意勾选了全部并不给提示,在使用vim查看的时候并不能看到所有
在这里插入图片描述
一般做题都是他有什么勾什么,要是这样还解不出来这边建议开摆(有时候python的零宽库也搞不出来)
大概就说这么多。睡觉了
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>