CTF常見編碼及加解密(超全)

@javascript

前言

​ 最近打了場ctf,真的是被各類編碼以及加密方式給搞怕了,因此,今天就來整理一下ctf中常見的編碼,順便給此次比賽作一個總結。php

原網站連接:html

常見CTF編碼及加解密

補充

計算機中的數據都是按字節存儲。一個字節(Byte)由8個二進制位組成(bit)。(組成範圍是0~255(28)) 一個字節一共能夠用來表示256種不一樣的狀態,每個狀態對應一個符號,就是256個符號,從00000000到11111111。java

ASCII編碼

簡述 :mysql

ASCII 碼是對英語字符與二進制位之間的關係,作了統一規定。git

基本的 ASCII 字符集共有 128 個字符,其中有 96 個可打印字符,包括經常使用的字母、數字、標點符號等,github

​ 如:空格SPACE 是32(二進制:00100000);web

​ 數字0 是48(二進制:00110000);算法

​ 大寫字母A 是65(二進制:01000001)。sql

另外還有 32 個控制字符(不能打印出來)。

這128個符號,只佔用了一個字節的後面7位,最前面的一位統一規定爲0。

特徵: 只含有數字

  • 0-9, 49-57

  • A-Z, 65-90

  • a-z, 97-122

舉例:

明文:hello,world.
十六進制:0x680x650x6c0x6c0x6f0xff0c0x770x6f0x720x6c0x640x2e
十進制:1041011081081112551211911111410810046
二進制:011010000110010101101100011011000110111100101100011101110110111101110010011011000110010000101110

解碼連接1
解碼連接2

ASCII碼對照表

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Xwhz2PqG-1605780409798)(../img/1605670745231.png)]

base家族編碼

base16 / base32 / base64 / base58 / base85 / base 100

簡述:

**Base16編碼是將二進制文件轉換成由16個字符組成的文本 **

base32的編碼表是由(A-Z、2-7)32個可見字符構成,「=」符號用做後綴填充。

base64的編碼表是由(A-Z、a-z、0-九、+、/)64個可見字符構成,「=」符號用做後綴填充。

base58的編碼表相比base64少了數字0,大寫字母I,O,小寫字母 l (這個是L),以及符號‘+’和‘/’

base91的密文由91個字符(0-9,a-z,A-Z,!#$%&()*+,./:;<=>?@[]^_`{|}~」)組成

**Base100編碼/解碼工具(又名:Emoji表情符號編碼/解碼),可將文本內容編碼爲Emoji表情符號;同時也能夠將編碼後的Emoji表情符號內容解碼爲文本。 **

原理:

具體原理再也不詳細描述,(主要是太耗時間,能夠自行百度)

舉例:

明文:hello,world.123456

base16: 68656C6C6F2C776F726C642E313233343635
特徵:大寫字母(A-Z)和數字(0-9),不用‘=’補齊。
base32: NBSWY3DPFR3W64TMMQXDCMRTGQ3DK===
特徵:大寫字母(A-Z)和數字(2-7),不滿5的倍數,用‘=’補齊。
base64: aGVsbG8sd29ybGQuMTIzNDY1
特徵:大小寫字母(A-Z,a-z)和數字(0-9)以及特殊字符‘+’,‘/’,不滿3的倍數,用‘=’補齊。
base58: 2smDFYXWKE8vc8XA8dadEYcSqcQb
特徵:相比Base64,Base58不使用數字"0",字母大寫"O",字母大寫"I",和字母小寫"l",以及"+"和"/"符號,最主要的是後面不會出現'='。
base85: BOu!rDst>tGAhM<A1fSl1GgsI
特徵:特色是奇怪的字符比較多,可是很難出現等號
明文:hello,world.123456
base91: TPwJh>go2Tv!_,aRA2IbLmA
特徵:由91個字符(0-9,a-z,A-Z,!#$%&()*+,./:;<=>?@[]^_`{|}~」)組成
不支持中文。
base100: 👟👜👣👣👦📦💳💃👮👦👩👣👛🐥🐨🐩🐪🐫🐬🐭
特徵:就是一堆Emoji表情

在線編碼

base16 / base32 / base64

base58
base85
base91

base100

MD五、SHA一、HMAC、NTLM等相似加密型

一、MD5

簡述:

​ 通常MD5值是32位由數字「0-9」和字母「a-f」所組成的字符串,字母大小寫統一;若是出現這個範圍之外的字符說明這多是個錯誤的md5值,就不必再拿去解密了。

​ 16位值是取的是8~24位。

特徵:

​ 有固定長度,通常是32位或者16位

​ 由數字「0-9」和字母「a-f」組成

舉例:

明文:hello,world.123456
md5(hello,world.123456,32) = 5189503aae1b1c0a6fbf7ea9e3128ab0
md5(hello,world.123456,16) = ae1b1c0a6fbf7ea9

在線加解密

MD5解密1

MD5解密2

二、SHA1

簡述

​ SHA1是一種密碼散列函數,SHA1能夠生成一個被稱爲消息摘要的160位,20字節的散列值,散列值一般的呈現形式爲40位十六進制數。這種加密和MD5相似。

特徵:

​ 有固定長度,爲40位的字符串

舉例:

明文:hello,world.123456
sha1(hello,world.123456)= 0179303b8f08fbc3d16cd23a4be5828790e12375

在線加解密

SHA1加解密1

SHA1加解密2

三、HMAC

簡述:

​ HMAC (Hash-based Message Authentication Code) 經常使用於接口簽名驗證,這種算法就是在前兩種加密的基礎上引入了祕鑰,而祕鑰又只有傳輸雙方纔知道,因此基本上是破解不了的 。

特徵:

​ 和MD5相似,可是有祕鑰。

舉例:

在線加解密:

HAMC加解密

四、NTLM

簡述:

​ 這種加密是Windows的哈希密碼,是 Windows NT 早期版本的標準安全協議。與它相同的還有Domain Cached Credentials(域哈希)。

舉例:
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yIepnHXf-1605780409801)(../img/NTLM示例.png)]

在線解密:

NTML加解密

五、相似加密窮舉

# 算法 長度
1 md5 32/16
2 sha1 40
3 sha256 64
4 sha512 128
5 adler32 8
6 crc32 8
7 crc32b 8
8 fnv132 8
9 fnv164 16
10 fnv1a32 8
11 fnv1a64 16
12 gost 64
13 gost-crypto 64
14 haval128,3 32
15 haval128,4 32
16 haval128,5 32
17 haval160,3 40
18 haval160,4 40
19 haval160,5 40
20 haval192,3 48
21 haval192,4 48
22 haval192,5 48
23 haval224,3 56
24 haval224,4 56
25 haval224,5 56
26 haval256,3 64
27 haval256,4 64
28 haval256,5 64
29 joaat 8
30 md2 32
31 md4 32
32 ripemd128 32
33 ripemd160 40
34 ripemd256 64
35 ripemd320 80
36 sha224 56
37 sha3-224 56
38 sha3-256 64
39 sha3-384 96
40 sha3-512 128
41 sha384 96
42 sha512/224 56
43 sha512/256 64
44 snefru 64
45 snefru256 64
46 tiger128,3 32
47 tiger128,4 32
48 tiger160,3 40
49 tiger160,4 40
50 tiger192,3 48
51 tiger192,4 48
52 whirlpool 128
53 mysql 老MYSQL數據庫用的,16位,且第1位和第7位必須爲0-8
54 mysql5 40
55 NTLM 32
56 Domain Cached Credentials 32

AES、DES、RC四、Rabbit、3DES型加密

簡述:

以上都是非對稱性加密算法,就是引入了密鑰,密文特徵與Base64相似,

在線解密:
非對稱加密

Unicode編碼

簡述:

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。
它用兩個字節來編碼一個字符,字符編碼通常用十六進制來表示.

舉例:

Unicode有如下四種編碼方式:

明文:hello,world.

&#x [hex]:&#x0068;&#x0065;&#x006C;&#x006C;&#x006F;&#xFF0C;&#x0077;&#x006F;&#x0072;&#x006C;&#x0064;&#x002E;

&# [hex]:&#00104;&#00101;&#00108;&#00108;&#00111;&#65292;&#00119;&#00111;&#00114;&#00108;&#00100;&#00046;

\u [hex]:\U0068\U0065\U006C\U006C\U006F\U002C\U0077\U006F\U0072\U006C\U0064\U002E

\u+ [hex]:\U+0068\U+0065\U+006C\U+006C\U+006F\U+FF0C\U+0077\U+006F\U+0072\U+006C\U+0064\U+002E

在線編碼:

四種方式都有

unicode16進制

unicode

常見\u方式

HTML實體編碼

簡述:

​ 字符實體是用一個編號寫入HTML代碼中來代替一個字符,在使用瀏覽器訪問網頁時會將這個編號解析還原爲字符以供閱讀。

舉例:

明文:hello,world.
十進制:&#104;&#101;&#108;&#108;&#111;&#65292;&#119;&#111;&#114;&#108;&#100;&#46;
十六進制:&#x68;&#x65;&#x6C;&#x6C;&#x6F;&#xFF0C;&#x77;&#x6F;&#x72;&#x6C;&#x64;&#x2E;

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-oWM5P8YX-1605780409803)(../img/HTML實體編碼.png)]

在線加解密:

HTML實體加解密1

HTML實體加解密2

Escape、Unescape編碼(%u)

簡述:

Escape/Unescape加密解碼/編碼解碼,又叫%u編碼,其實就是字符對應UTF-16 16進製表示方式前面加%u。Unescape解碼/解密,就是去掉"%u"後,將16進制字符還原後,由utf-16轉碼到本身目標字符。如:字符「中」,UTF-16BE是:「6d93」,所以Escape是「%u6d93」,反之也同樣!

舉例:

明文:hello,world.
密文:%u0068%u0065%u006c%u006c%u006f%uff0c%u0077%u006f%u0072%u006c%u0064%u002e

在線加解密:

Escape編碼/解碼

URL編碼

簡述:

url編碼又叫百分號編碼,是統一資源定位(URL)編碼方式。URL地址(常說網址)規定了經常使用地數字,字母能夠直接使用,另一批做爲特殊用戶字符也能夠直接用(/,:@等),剩下的其它全部字符必須經過%xx編碼處理。 如今已經成爲一種規範了,基本全部程序語言都有這種編碼,如js:有encodeURI、encodeURIComponent,PHP有 urlencode、urldecode等。編碼方法很簡單,在該字節ascii碼的的16進制字符前面加%. 如 空格字符,ascii碼是32,對應16進制是'20',那麼urlencode編碼結果是:%20。

特徵:

編碼前面都有%

舉例:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-sqQeSWfX-1605780409806)(../img/URL編碼.png)]

在線加解密:

URL加解密

Hex編碼

簡述:

​ Hex 全稱 是Intel HEX。Hex文件是由一行行符合Intel HEX文件格式的文本所構成的ASCII文本文件。在Intel HEX文件中,每一行包含一個HEX記錄。這些記錄由對應機器語言碼和/或常量數據的十六進制編碼數字組成。

特徵:

十六進制(Hexadecimal)

它是計算機中數據的一種表示方法,由0-9,A-F組 成,字母不區分大小寫

與10進制的對應關係是:0-9不變,A-F對應10-15。

舉例:

明文:hello,world.
密文(帶%):%68%65%6c%6c%6f%ef%bc%8c%77%6f%72%6c%64%2e
密文(不帶%):68656C6C6FEFBC8C776F726C642E

在線加解密:

不帶%

帶%

js專用加密

一、JS顏文字加密

特徵:

一堆顏文字構成的js代碼,在F12中可直接解密執行

舉例:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6RPmHes2-1605780409807)(../img/1605750605378.png)]

在線加密:

JS顏文字加密

解密在F12的console中

二、Jother編碼

簡述:

jother是一種運用於javascript語言中利用少許字符構造精簡的匿名函數方法對於字符串進行的編碼方式。

特徵:

只用 **! + ( ) [ ] { } **這八個字符就能完成對任意字符串的編碼。可在F12中解密執行

舉例:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KW1bCswg-1605780409809)(../img/1605751409787.png)]

在線解密:
Jother

四、JSFuck編碼

特徵:

與jother很像,只是少了{ }

舉例:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JeIl5Zq8-1605780409810)(../img/1605751794549.png)]

在線加密:

JSFuck加密

解密在F12的console中

Quoted-printable編碼

簡述:

它是多用途互聯網郵件擴展(MIME) 一種實現方式。有時候咱們能夠郵件頭裏面可以看到這樣的編碼;

特徵:

任何一個8位的字節值可編碼爲3個字符:一個等號」=」後跟隨兩個十六進制數字(0–9或A–F)表示該字節的數值.

舉例:

明文:天上掉下了個豬八戒
密文:=E5=A4=A9=E4=B8=8A=E6=8E=89=E4=B8=8B=E4=BA=86=E4=B8=AA=E7=8C=AA=E5=85=AB=E6=88=92

在線編碼:

在線編碼

我就吃過該編碼的虧,當時不知道啊/(ㄒoㄒ)/~~

XXencode

簡述:

​ XXencode將輸入文本以每三個字節爲單位進行編碼。若是最後剩下的資料少於三個字節,不夠的部份用零補齊。這三個字節共有24個Bit,以6bit爲單位分爲4個組,每一個組以十進制來表示所出現的數值只會落在0到63之間。以所對應值的位置字符代替。

特徵:

字符範圍是:

​ 0-9,A-Z,a-z,

​ 一共64個字符。跟base64打印字符相比,就是UUencode多一個「-」 字符,少一個」/」 字符。

舉例:

明文:hello,world.
密文:BO4JgP4yXf5RjQalY9U++

在線加解密:

UUencode加解密

UUencode

簡述:

​ UUencode是一種二進制到文字的編碼,最先在unix郵件系統中使用,全稱:Unix-to-Unix encoding,UUencode將輸入文本以每三個字節爲單位進行編碼,若是最後剩下的資料少於三個字節,不夠的部份用零補齊。三個字節共有24個Bit,以6-bit爲單位分爲4個組,每一個組以十進制來表示所出現的字節的數值。這個數值只會落在0到63之間。而後將每一個數加上32,所產生的結果恰好落在ASCII字符集中可打印字符(32-空白…95-底線)的範圍之中。

舉例:

明文:hello,world.
密文:,:&5L;&\L=V]R;&0N

在線解密&工具

UUencode1

UUencode2

aaencode編碼

特徵:

將JS代碼轉換成經常使用的網絡表情

舉例:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-B1dSP7Ym-1605780409811)(../img/1605772666057.png)]

在線加解密:

aaencode1

aaencode2

aaencode3

jjencode編碼

特徵:

將JS代碼轉換成只有符號的字符串

舉例:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-A19nMNgs-1605780409811)(../img/1605779161126.png)]

在線加解密:

jjencode加密

jjencode解密

brainfuck編碼

簡述:

Brainfuck是一種極小化的計算機語言,按照"Turing complete(完整圖靈機)"思想設計的語言,它的主要設計思路是:用最小的概念實現一種「簡單」的語言。

特徵:

BrainFuck 語言只有八種符號,全部的操做都由這八種符號 (> < + - . , [ ]) 的組合來完成。

舉例:

明文:hello,world.
密文:+++++ +++++ [->++ +++++ +++<] >++++ .---. +++++ ++..+ ++.<+ +++++ ++[->
----- ---<] >---. <++++ ++++[ ->+++ +++++ <]>++ +++++ ++++. ----- ---.+
++.-- ----. ----- ---.< +++++ ++[-> ----- --<]> ----- .<

在線加解密:

Brainfuck1

Brainfuck2

莫爾斯電碼

簡述:

​ 摩爾斯電碼(Morse Code)是由美國人薩繆爾·摩爾斯在1836年發明的一種時通時斷的且經過不一樣的排列順序來表達不一樣英文字母、數字和標點符號的信號代碼,摩爾斯電碼主要由如下5種它的代碼組成:

  1. 點(.)
  2. 劃(-)
  3. 每一個字符間短的停頓(一般用空格表示停頓)
  4. 每一個詞之間中等的停頓(一般用 / 劃分)
  5. 以及句子之間長的停頓

莫爾斯電碼對應表:

A .- B -... C -.-. D -.. E . F ..-. G --. H .... I .. J .---
K -.- L .-.. M -- N -. O --- P .--. Q --.- R .-. S ... T -
U ..- V ...- W .-- X -..- Y -.-- Z --.. 0 ----- 1 .---- 2 ..--- 3 ...--
4 ....- 5 ..... 6 -.... 7 --... 8 ---.. 9 ----. . .-.-.- , --..-- ? ..--.. - -....-
= -...- : ---... ; -.-.-. ( -.--. ) -.--.- / -..-. " .-..-. $ ...-..- ' .----. .-.-..
_ ..--.- @ .--.-. ! ---. ! -.-.-- + .-.-. ~ .-... # ...-.- & . ... -..-.

特徵:

由 **. - "空格" / **表示。

舉例:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gmLE7aZs-1605780409812)(../img/1605776280497.png)]

在線加解密:

莫斯電碼1

社會主義編碼

特徵:

字符所有是社會主義核心價值觀。

舉例:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-xmdLUxx6-1605780409813)(../img/1605778636185.png)]

在線加解密:

社會主義編碼

與佛論禪

特徵:

密文以」佛曰:如是我聞:」開頭,密文通常是與關佛經的漢字

舉例:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-v4op8S2N-1605780409813)(../img/1605779656659.png)]

在線工具:

與佛論禪

· · · 一些簡單編碼沒有寫, 之後遇到其餘的編碼,再補充到後面。。。

相關文章
相關標籤/搜索