CTF盤點系列——腦洞大開的編碼&加解密

前言

玩過CTF的小伙伴會經(jīng)常遇到類似這樣的問題:dalao這是啥編碼方式啊?怎么解密啊?

其實CTF中的腦洞密碼題,通常是費現(xiàn)代加密方式,一般都是各種古典密碼的變形,一般出題者會對密文進行一些處理,但都會留下不少線索,當然也需要參賽者對于各種編碼方式有所了解,這樣更有利于快速入手解密,結(jié)合一定的腦洞,拿到Flag就so easy了.

編碼方式匯總

常見編碼

ASCii編碼

Base64/32/16編碼

shellcode編碼

Quoted-printable編碼

XXencode編碼

UUencode編碼

URL編碼

Unicode編碼

Escape/Unescape編碼

HTML實體編碼

Tap Code敲擊碼

Morse Code摩爾斯電碼

各種文本加密

換位加密

Rail-fence Cipher柵欄密碼

Curve Cipher曲路密碼

Columnar Transposition Cipher列位移加密

替換加密

Atbash Cipher埃特巴什碼

Caesar Cipher凱撒密碼

ROT5/13/18/47

Simple Substitution Cipher簡單換位密碼

Hill Cipher希爾密碼

Pigpen Cipher豬圈密碼

Polybius Square Cipher波利比奧斯方陣密碼

夏多密碼(曲折加密)

Playfair Cipher普萊費爾密碼

Vigenere Cipher維吉尼亞密碼

Autokey Cipher自動密鑰密碼

Beaufort Cipher波弗特密碼

Running Key Cipher滾動密鑰密碼

Porta Cipher

Homophonic Substitution Cipher同音替換密碼

Affine Cipher仿射密碼

Baconian Cipher培根密碼

ADFG/VX Cipher ADFG和ADFGVX密碼

Bifid Cipher雙密碼

Trifid Cipher三分密碼

Four-Square Cipher四方密碼

Checkerboard Cipher棋盤密碼

============================

Base64

ZXZhbCgkX1BPU1RbcDRuOV96MV96aDNuOV9qMXVfU2gxX0oxM10p

NTU2NJC3ODHHYWJIZ3P4ZWY=

Base64編碼要求把3個8位字節(jié)轉(zhuǎn)化為4個6位的字節(jié),之后在6位的前面補兩個0,形成8位一個字節(jié)的形式。 如果剩下的字符不足3個字節(jié),則用0填充,輸出字符使用’=’,因此編碼后輸出的文本末尾可能會出現(xiàn)1或2個’=’

Base32

Base32和Base64相比只有一個區(qū)別就是,用32個字符表示256個ASC字符,也就是說5個ASC字符一組可以生成8個Base字符,反之亦然。

在線編解碼

希爾密碼

密文: 22,09,00,12,03,01,10,03,04,08,01,17
明文:wjamdbkdeibr

解題思路:使用的矩陣是 1 2 3 4 5 6 7 8 10

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 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

把字母用數(shù)字表示,解密時把數(shù)字轉(zhuǎn)換成字母,然后放入腳本,密鑰要分成矩陣。一般是對稱的

原文鏈接

百度百科

腳本已存

柵欄密碼

把要加密的明文分成N個一組,然后把每組的第1個字連起來,形成一段無規(guī)律的話。

密文樣例:tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren.

解密程序:

char s[]= “tn c0afsiwal kes,hwit1r  g,npt  ttessfu}ua u  hmqik e {m,  n huiouosarwCniibecesnren.”;
char t[86]= “”;
int i,j,k;
k=0;
for (i=0;i<17;i++)
{
for(j=0;j<5;j++)
{
t[k++]= ch[j*17+i];
}
}
for(i=0;i<85;i++)
{
printf(“%c”,t[i]);
}

原文鏈接

在線解密

凱撒密碼

通過把字母移動一定的位數(shù)來實現(xiàn)加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一個固定數(shù)目進行偏移后被替換成密文。

常規(guī)解密:

from pycipher import Caesar
for i in range(1,27):
str=Caesar(key=i).encipher(‘UIF RVJDLCSPXOGPYKVNQTPWFSUIFMBAZEPH’)
print “mingwen:”+str.lower()+“rn“

密文樣例:U8Y]:8KdJHTXRI>XU#?!K_ecJH]kJGbRH7YJH7YSH]=93dVZ3^S8$:8″&:9U]RH;g=8Y!U92’=j$KH]ZSj&[S#!gU#*dK9.

解題思路:

得知是凱撒加密之后,嘗試進行127次輪轉(zhuǎn)爆破:

lstr=”””U8Y]:8KdJHTXRI>XU#?!K_ecJH]kJG*bRH7YJH7YSH]*=93dVZ3^S8*$:8″&:9U]RH;g=8Y!U92’=j*$KH]ZSj&[S#!gU#*dK9.”””
forp in range(127):
str1 = ”
for i in lstr:
temp = chr((ord(i)+p)%127)
if 32<ord(temp)<127 :
str1 = str1 + temp
feel = 1
else:
feel = 0
break
if feel == 1:
print(str1)

原文鏈接

Unicode

密文樣例:u5927u5bb6u597duff0cu6211u662fu0040u65e0u6240u4e0du80fdu7684u9b42u5927u4ebauff01u8bddu8bf4u5faeu535au7c89u4e1du8fc7

在線解密

brainfuck

類型:++++++++++[>+++++++>++++++++++>+++>+<<<<-]

++.>+.+++++++..+++.>++.<<+++++++++++++++.

.+++.——.——–.>+.>.

利用BFVM.exe直接解密

用法 loadtxt 1.txt

在線解密

摩斯密碼

密文樣例:– — .-. … .

在線解密

jsfuck

密文中 ()[]{}!+

在線解密

在線解密

如果jsfuck定義的是一個函數(shù)并且最后以()結(jié)尾,則在火狐console中運行時函數(shù)也會運行,就會錯掉什么提示。這時候需要把最后的()換成.toString()

培根密碼

培根所用的密碼是一種本質(zhì)上用二進制數(shù)設(shè)計的。不過,他沒有用通常的0和1來表示,而是采用a和b。

百科鏈接

已知將一個flag以一種加密形式為使用密鑰進行加密,使用密鑰WELCOMETOCFF加密后密文為

培根密碼表看其他文件

費娜姆密碼

異或

已知將一個flag以一種加密形式為使用密鑰進行加密,使用密鑰WELCOMETOCFF加密后密文為 00000000000000000000000000000000000

0000000000000000101110000110001000000101000000001 請分析出flag。

密鑰為12位,密文為84位,可能是異或:

7位二進制可能表示字母順序:

W E L C O M E T O C F F

密文

0000000 0000000 0000000 0000000 0000000 0000000 0000000 0010111 0000110 0010000 0010100 0000001

密鑰

0010111 0000101 0001100 0000011 0001111 0001101 0000101 0010100 0001111 0000011 0000110 0000110

Xor

0010111 0000101 0001100 0000011 0001111 0001101 0000101 0000011 0001001 0010011 0010010 0000111

W E L C O M E C I S R G

即:WELCOMECISRG

flag:WELCOMECISRG

豬圈密碼,又稱共濟會密碼

百度百科

CRC32

密文樣例:4D1FAE0B

import zlib

def crc32(st):

crc = zlib.crc32(st)

if crc > 0:

return “%x” % (crc)

else:

return “%x” % (~crc ^ 0xffffffff)

原文鏈接

顏文字加密(aaencode)

這個好萌啊>.<

顏文字js加密:明文alert(“flag”);

密文:?ω??= /`m′)? ~┻━┻ //′?`/ [‘’]; o=(???) ==3; c=(?Θ?) =(???)-(???); (?Д?) =(?Θ?)= (o_o)/ (o_o);(?Д?)={?Θ?: ‘’ ,?ω?? : ((?ω??==3) +’’) [?Θ?] ,???? :(?ω??+ ‘’)[o^^o -(?Θ?)] ,?Д??:((???==3) +’’)[???] }; (?Д?) [?Θ?] =((?ω??==3) +’’) [c language=”_o”][/c];(?Д?) [‘c’] = ((?Д?)+’’) [ (???)+(???)-(?Θ?) ];(?Д?) [‘o’] = ((?Д?)+’’) [?Θ?];(?o?)=(?Д?) [‘c’]+(?Д?) [‘o’]+(?ω?? +’’)[?Θ?]+ ((?ω??==3) +’’) [???] + ((?Д?) +’’) [(???)+(???)]+ ((???==3) +’’) [?Θ?]+((???==3) +’’) [(???) – (?Θ?)]+(?Д?) [‘c’]+((?Д?)+’’) [(???)+(???)]+ (?Д?) [‘o’]+((???==3) +’’) [?Θ?];(?Д?) [‘’] =(o_o) [?o?] [?o?];(?ε?)=((???==3) +’’) [?Θ?]+ (?Д?) .?Д??+((?Д?)+’’) [(???) + (???)]+((???==3) +’’) [o^^o -?Θ?]+((???==3) +’’) [?Θ?]+ (?ω?? +’’) [?Θ?]; (???)+=(?Θ?); (?Д?)[?ε?]=’\’; (?Д?).?Θ??=(?Д?+ ???)[o_o -(?Θ?)];(o???o)=(?ω?? +’’)[c language=”^^o”][/c];(?Д?) [?o?]='”‘;(?Д?) [‘’] ( (?Д?) [‘’] (?ε?+(?Д?)[?o?]+ (?Д?)[?ε?]+(?Θ?)+ (???)+ (?Θ?)+ (?Д?)[?ε?]+(?Θ?)+ ((???) + (?Θ?))+ (???)+ (?Д?)[?ε?]+(?Θ?)+ (???)+ ((???) + (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ ((o_o) +(o_o))+ ((o_o) – (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ ((o_o) +(o_o))+ (???)+ (?Д?)[?ε?]+((???) + (?Θ?))+ (c_o)+ (?Д?)[?ε?]+(???)+ ((o_o) – (?Θ?))+ (?Д?)[?ε?]+(?Θ?)+ (???)+ ((o_o) +(o_o))+ (?Д?)[?ε?]+(?Θ?)+ ((???) + (?Θ?))+ (???)+ (?Д?)[?ε?]+(?Θ?)+ (???)+ (?Θ?)+ (?Д?)[?ε?]+(?Θ?)+ (???)+ ((???) + (o_o))+ (?Д?)[?ε?]+(???)+ ((o_o) – (?Θ?))+ (?Д?)[?ε?]+((???) + (?Θ?))+ (?Θ?)+ (?Д?)[?ε?]+((???) + (o_o))+ (o_o)+ (?Д?)[?o?]) (?Θ?)) (‘_’);

在線解密

Jjencode

密文:$=~[];$={:++$,$$$$:(![]+””)[$],$:++$,$$:(![]+””)[$],$:++$,$$$:({}+””)[$],$$$:($[$]+””)[$],$$:++$,$$$:(!””+””)[$],$:++$,$$:++$,$$:({}+””)[$],$$:++$,$$$:++$,$:++$,$$:++$};$.$=($.$=$+””)[$.$$]+($.$=$.$[$.$])+($.$$=($.$+””)[$.$])+((!$)+””)[$.$$]+($.=$.$[$.$$])+($.$=(!””+””)[$.$])+($.=(!””+””)[$.$])+$.$[$.$$]+$.+$.$+$.$;$.$$=$.$+(!””+””)[$.$$]+$.+$.+$.$+$.$$;$.$=($.)[$.$][$.$];$.$($.$($.$$+”””+$.$$+(![]+””)[$.$]+$.$$$+”\”+$.$+$.$$+$.$+$.+”(\”\”+$.$+$.$+$.+$.$$$+(![]+””)[$.$]+(![]+””)[$.$]+$.$+”,\”+$.$+$.+”\”+$.$+$.$+$.$+$.$$+”\”+$.$+$.$$+$.$$+$.$$+”\”+$.$+$.$+$.$$+$.$$+”\”+$.$+$.$$+$.$+”\”+$.$+$.$$+$.$+”\”+$.$+$.$$+$.+$.+”\”\”+$.$+$._+”)”+”””)())();

解密地址

無字母加密

<?php

@$_++; // $_ = 1

$__=(“#”^”|”); // $__ = _

$__.=(“.”^”~”); // _P

$__.=(“/”^”`”); // _PO

$__.=(“|”^”/”); // _POS

$__.=(“{“^”/”); // _POST

${$__}[!$_](${$__}[$_]); // $_POST[0]($_POST[1]);

?>

在線解密

Utf-7編解碼

原文:gdfgdfg

密文:+AGcAZABmAGcAZABmAGc-

無論何種,都是+開頭-結(jié)尾

在線解密

云影密碼

如果密碼只有01248組成。。。

原理很簡單,有了1,2,4,8這四個簡單的數(shù)字,你可以以加法表示出0-9任何一個數(shù)字,例如0=28,7=124,9=18。

這樣,再用1-26來表示A-Z,就可以用作密碼了。

為了不至于混亂,我個人引入了第五個數(shù)字0,來用作間隔,以避免翻譯錯誤,所以還可以稱“01248密碼”。

題目:12401011801180212011401804

第一步,分割,即124 1 118 118 212 114 18 4

第二步,基本翻譯,例如124可以表示7,也可以表示16(但不可能是34,因為不會超過26),所以可以放在一邊,翻譯其他沒有異議的,可得:124 a s s w o 18 d

第三步,推測得出明文。可以推測后面的18表示r,前面的為p最合適。

明文:password(密碼).

RC4

key welcometoicqedu

密文UUyFTj8PCzF6geFn6xgBOYSvVTrbpNU4OF9db9wMcPD1yDbaJw==

用腳本解密 腳本已存

曼徹斯特

轉(zhuǎn)二進制 不是10就是01 即是曼徹斯特 解密看腳本

對于其他一些未知密文,可嘗試到下列幾個網(wǎng)站轉(zhuǎn)換試試,看看運氣

在線解密

在線解密

在線解密

其他小技巧:

  • 如果密文是十進制,字符范圍為“0-9”,可以猜測是ASCII編碼;

  • 如果密文由“a-z”“A-Z”和“=”構(gòu)成,特別是末尾有“=”,那么可以判斷為Base64編碼;

  • 如果密文含有“%” ,形式為 “%xx” 和 “%uxxxx”,字符范圍又是十六進制“0-F”,判斷是escape() 函數(shù)編碼,用unescape()解碼;

  • 若密文由“[],(),{},+,!”字符組成的編碼通常就通過Jother解密。

判斷出可能的編碼方式,就可以使用程序或工具進行解密。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,362評論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,013評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,346評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,421評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,146評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,534評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,585評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,767評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,318評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,074評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,258評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,828評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,486評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,916評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,156評論 1 290
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,993評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,234評論 2 375

推薦閱讀更多精彩內(nèi)容

  • 0x01 目錄 常見編碼: ASCII編碼 Base64/32/16編碼 shellcode編碼 Quoted-p...
    H0f_9閱讀 12,904評論 2 17
  • CTF中那些腦洞大開的編碼和加密 0x00 前言 正文開始之前先閑扯幾句吧,玩CTF的小伙伴也許會遇到類似這樣的問...
    查無此人asdasd閱讀 6,059評論 0 19
  • 本文主要介紹移動端的加解密算法的分類、其優(yōu)缺點特性及應(yīng)用,幫助讀者由淺入深地了解和選擇加解密算法。文中會包含算法的...
    蘋果粉閱讀 11,541評論 5 29
  • 概述 之前一直對加密相關(guān)的算法知之甚少,只知道類似DES、RSA等加密算法能對數(shù)據(jù)傳輸進行加密,且各種加密算法各有...
    Henryzhu閱讀 3,044評論 0 14
  • 一、自定義控件 1. 尺寸單位單位 dp:當使用dp時,不同像素密度的手機上能顯示基本相同的長度,一般而言,非文字...
    ezero閱讀 195評論 0 0