bugku ——加密 做题记录
目錄
1,滴答—滴
2,聰明的小羊
3,ok
4這不是摩斯密碼
5,easy_crypto
6,簡單加密
7,散亂的密文
8 凱撒部長的獎勵
9,一段base64?
10,.!?
11,+[]-(Brainfuck)
12,奇怪的密碼
13托馬斯.杰斐遜(杰斐遜轉盤加密)
14 zip偽加密
15 告訴你個秘密(ISCCCTF)
16,這不是 md5 (16進制)
17 ,貝斯家族(base)
18,富強民主(核心價值觀密碼)
19,python(N1CTF)
20?進制轉換
21 affine(仿射)
22,?Crack it(Linux shadow 文件解密)
23 rsa?
24 來自宇宙的信號(標準銀河字母)
1,滴答—滴
發(fā)現一段摩斯密碼:-... -.- -.-. - ..-. -- .. ... -.-.
直接在線解碼得到:BKCTFMISC
flag: KEY{BKCTFMISC}
2,聰明的小羊
打開發(fā)現一段柵欄密碼:KYsd3js2E{a2jda}
在線解碼得到:?KEY{sad23jjdsa2}
3,ok
打開搜了一下 這是一種名叫OOk 的編程語言
解碼地址:http://tool.bugku.com/brainfuck/?wafcloud=1
找了個在線解碼得到flag:flag{ok-ctf-1234-admin}
4這不是摩斯密碼
下載文件打開是一段字符:查詢得知是Brainfuck語言,
+++++ +++++ [->++ +++++ +++<] >++.+ +++++ .<+++ [->-- -<]>- -.+++ +++.< ++++[ ->+++ +<]>+ +++.< +++[- >---< ]>--- .---- .<+++ ++++[ ->--- ----< ]>--- ----- ----- .<+++ ++++[ ->+++ ++++< ]>+++ ++.<+ +++++ +[->- ----- -<]>. <++++ ++++[ ->+++ +++++ <]>++ .<+++ [->-- -<]>- ----. <++++ +++[- >---- ---<] >---- ----. +++++ +..++ +++.+ .<+++ [->-- -<]>- --.<+ +++++ +[->+ +++++ +<]>+ ++.++ +.+++ +++++ +.--- -.+++ ++.<+ ++[-> +++<] >++++ ++.<在線解碼:http://tool.bugku.com/brainfuck/?wafcloud=1
flag{ok-c2tf-3389-admin}
5,easy_crypto
打開發(fā)現是長度不一樣的由0和1 組成的字符串,
0010 0100 01 110 1111011 11 11111 010 000 0 001101 1010 111 100 0 001101 01111 000 001101 00 10 1 0 010 0 000 1 01111 10 11110 101011 1111101果斷采用莫斯電碼解碼:
?
6,簡單加密
看到密文的最后兩個字符為 AA:猜想可能是凱撒密碼和base64 的結合
base64 的結尾是 ==? ,而= 的ASCII為 61? ?A 的 ASCII 為 65,可知凱撒密碼的偏移量為 4
把 密文 的每個字符的 ASCII 減去 4 得到的密文 為 base64 的密文,在進行base64解碼:
?
得到flag:?key{68743000650173230e4a58ee153c68e8}
?
7,散亂的密文
lf5{ag024c483549d7fd@@1}
一張紙條上凌亂的寫著2 1 6 5 3 4
?
那就在紙上寫唄:
然后按123456得到一個字符串:f25dl03fa4d1g87}{c9@544@?
在進行柵欄密碼解碼:flag{52048c453d794df1}@@
flag:?flag{52048c453d794df1}
8 凱撒部長的獎勵
就在8月,超師傅出色地完成了上級的特遣任務,凱撒部長準備給超師傅一份特殊的獎勵,興高采烈的超師傅卻只收到一長串莫名的密文,超師傅看到英語字串便滿臉黑線,幫他拿到這份價值不菲的獎勵吧。 密文:MSW{byly_Cm_sIol_lYqUlx_yhdIs_Cn_Wuymul_il_wuff_bcg_pCwnIl_cm_u_Yrwyffyhn_guh_cz_sio_quhn_ni_ayn_bcm_chzilguncihm_sio_wuh_dich_om}
題目來源:第七季極客大挑戰(zhàn)
找一個凱撒密碼的在線解碼,解密后得到:
SYC{here_Is_yOur_rEwArd_enjOy_It_Caesar_or_call_him_vIctOr_is_a_Excellent_man_if_you_want_to_get_his_informations_you_can_join_us}
9,一段base64?
把這一串密文 放入 Converter
?
?
?
flag{ctf_tfc201717qwe}
10,.!?
這段密文其實是 OOK 語言的變形
在線解碼:
flag{bugku_jiami}
11,+[]-(Brainfuck)
一段Brainfuck語言,在線解碼:flag{bugku_jiami_23}
12,奇怪的密碼
gndk€rlqhmtkwwp}z
?對比一下: f? ?l? ?a? ? g? ? 的ascii 為102 108? 97? 103
? ? ? ? ? ? ? ? ? g? ?n? ? d? ? k? 的ASCII為103 110 100 107?
依次 推移? 1? 2? 3? 4
根據這個規(guī)律 寫一個腳本:
?
得到:flag{lei_ci_jiami}
13托馬斯.杰斐遜(杰斐遜轉盤加密)
這個轉盤加密,比如第一個密鑰匙:2、密文匙:H
把轉盤第二行單獨提出來 ??2: <KPBELNACZDTRXMJQOYHGVSFUWI <
從H的地方一直剪切,把剪切的內容放在最前面,變成 ???2: <HGVSFUWIKPBELNACZDTRXMJQOY <
依次類推把14行都按這樣的方式整一遍就得到這個:
2: ?<HGVSFUWIKPBELNACZDTRXMJQOY <
5: ?<CPMNZQWXYIHFRLABEUOTSGJVDK <
1: ?<BVIQHKYPNTCRMOSFEZWAXJGDLU <
3: ?<TEQGYXPLOCKBDMAIZVRNSJUWFH <
6: ?<SLOQXVETAMKGHIWPNYCJBFZDRU <
4: ?<XQYIZMJWAORPLNDVHGFCUKTEBS <
9: ?<WATDSRFHENYVUBMCOIKZGJXPLQ <
7: ?<CEONJQGWTHSPYBXIZULVKMRAFD <
8: ?<RJLXKISEFAPMYGHBQNOZUTWDCV <
14:<QWXPHKZGJTDSENYVUBMLAOIRFC <
10:<GOIKFHENYVUWABMCXPLTDSRJQZ <
13:<LTDENQWAOXPYVUIKZGJBMCSRFH <
11:<ENYSRUBMCQWVJXPLTDAOIKFZGH <
12:<SWAYXPLVUBOIKZGJRFHENMCQTD <
我這是是格式問題不太好看出flag,在記事本中容易看出來一點,flag在倒數第六列。
?
手工太慢 直接上代碼:
char = "ZWAXJGDLUBVIQHKYPNTCRMOSFE<<KPBELNACZDTRXMJQOYHGVSFUWI<<BDMAIZVRNSJUWFHTEQGYXPLOCK<<RPLNDVHGFCUKTEBSXQYIZMJWAO<<IHFRLABEUOTSGJVDKCPMNZQWXY<<AMKGHIWPNYCJBFZDRUSLOQXVET<<GWTHSPYBXIZULVKMRAFDCEONJQ<<NOZUTWDCVRJLXKISEFAPMYGHBQ<<QWATDSRFHENYVUBMCOIKZGJXPL<<WABMCXPLTDSRJQZGOIKFHENYVU<<XPLTDAOIKFZGHENYSRUBMCQWVJ<<TDSWAYXPLVUBOIKZGJRFHENMCQ<<BMCSRFHLTDENQWAOXPYVUIKZGJ<<XPHKZGJTDSENYVUBMLAOIRFCQW"miyao = [2,5,1,3,6,4,9,7,8,14,10,13,11,12] miwen = "HCBTSXWCRQGLES"char_array = char.split('<<') i = 0 result = "" for n in miyao:str = char_array[n-1]s = miwen[i]postion = str.index(s) # 找到 密文字符在 字符串中的位置str1 = str[:postion] # 截取前半部分字符串str2 = str[postion:] # 截取后后半部分字符串new_str = str2 + str1 #生成新的字符串i +=1result += new_str[-6] #這里是根據輸出的字符串 看到倒數第 6 列 是flag 才決定提取每一行的 倒數第6個字符print(new_str + "\n")print("flag{" + result.lower() + "}") #輸出flag得到flag{xsxsbugkuadmin}
14 zip偽加密
首先簡單了解一下什么是 zip偽加密
zip 偽加密:
壓縮源文件數據區(qū):?
50 4B 03 04:這是頭文件標記(0x04034b50)?
14 00:解壓文件所需 pkware 版本?
00 00:全局方式位標記(有無加密)?
08 00:壓縮方式?
5A 7E:最后修改文件時間?
F7 46:最后修改文件日期?
16 B5 80 14:CRC-32校驗(1480B516)?
19 00 00 00:壓縮后尺寸(25)?
17 00 00 00:未壓縮尺寸(23)?
07 00:文件名長度?
00 00:擴展記錄長度?
6B65792E7478740BCECC750E71ABCE48CDC9C95728CECC2DC849AD284DAD0500?
壓縮源文件目錄區(qū):?
50 4B 01 02:目錄中文件文件頭標記(0x02014b50)?
3F 00:壓縮使用的 pkware 版本?
14 00:解壓文件所需 pkware 版本?
00 00:全局方式位標記(有無加密,這個更改這里進行偽加密,改為09 00打開就會提示有密碼了)?
08 00:壓縮方式?
5A 7E:最后修改文件時間?
F7 46:最后修改文件日期?
16 B5 80 14:CRC-32校驗(1480B516)?
19 00 00 00:壓縮后尺寸(25)?
17 00 00 00:未壓縮尺寸(23)?
07 00:文件名長度?
24 00:擴展字段長度?
00 00:文件注釋長度?
00 00:磁盤開始號?
00 00:內部文件屬性?
20 00 00 00:外部文件屬性?
00 00 00 00:局部頭部偏移量?
6B65792E7478740A00200000000000010018006558F04A1CC5D001BDEBDD3B1CC5D001BDEBDD3B1CC5D001?
壓縮源文件目錄結束標志:?
50 4B 05 06:目錄結束標記?
00 00:當前磁盤編號?
00 00:目錄區(qū)開始磁盤編號?
01 00:本磁盤上紀錄總數?
01 00:目錄區(qū)中紀錄總數?
59 00 00 00:目錄區(qū)尺寸大小?
3E 00 00 00:目錄區(qū)對第一張磁盤的偏移量?
00 00:ZIP 文件注釋長度
?
?
如果把一個zip文件的文件頭或者加密標志位進行適當修改,那就可能會改變文件的可讀性了唄,這樣就達到了zip偽加密的目的,可是這里又有一個疑問了,你可能會問,為什么改成09,而不是其他的數字呢,其實改成09只是舉的一個例子,只要末位是奇數,就代表加密,反之,末位是偶數代表未加密
本題得到一個 壓縮包:flag.zip
用 winhex 打開:
把第壓縮源文件目錄區(qū)的? 加密標志位? 改為? 偶數? 就是將 09 改為 00 就可以了
得到flag:
flag{Adm1N-B2G-kU-SZIP}
?
15 告訴你個秘密(ISCCCTF)
得到一段密文:
636A56355279427363446C4A49454A7154534230526D6843
56445A31614342354E326C4B4946467A5769426961453067
細看可以發(fā)現 都是 在 0~F 之內? 推測是16 進制 解碼后得到:
cjV5RyBscDlJIEJqTSB0RmhCVDZ1aCB5N2lKIFFzWiBiaE0g
猜測可能是 base64 ,用 base 64 解密后得到:
?
然后最奇葩的出現了??
你絕對想不到 居然是 鍵盤上 被周圍的幾個鍵包圍 的 字符:
比如 在 鍵盤上 r5yg? 所包圍的 鍵 是? T
以此類推 得到:
?
直接提交就可以? ? ?是不是有點變態(tài) !!!!!
?
16,這不是 md5 (16進制)
測一下長度 發(fā)現是 44 個字符 肯定不是 md5 啦 ,既然提到md5 我想可能跟md5 有點 關系?
那試一下 sha1(),base64 發(fā)現不行
那嘗試一下 16 進制轉字符? ?得到:
flag{ae73587ba56baef5}? ? ?這是什么啊。。。
17 ,貝斯家族(base)
諧音嗎?? base? 應該是吧
但不知道是base 中的那種編碼方式:
64? 16? 32? 58? 62?85? 91? 92?
這題竟然是 base 91 我靠第一次碰到
flag{554a5058c9021c76}
附上 工具箱連接:http://ctf.ssleye.com/
18,富強民主(核心價值觀密碼)
我服了? 還有這種 密文?
這是一種 叫 核心價值觀? 的 編碼方式
工具箱連接:http://ctf.ssleye.com/
解密得到:
flag{90025f7fb1959936}
19,python(N1CTF)
是兩個Python腳本 一個是封裝好的 自定義類 N1ES.py? ? 一個是定義類的一個對象?
只需要讀懂 這 個加密的 類? 的加密的方法 相對應寫出解密函數
找了一個腳本:(這里只需要修改 N1ES類中 的 解密方法)
# -*- coding: utf-8 -*- import base64 def round_add(a,b):f = lambda x,y: x + y - 2 * (x & y)res = ''for i in range(len(a)):res += chr(f(ord(a[i]),ord(b[i])))return resdef permutate(table,block):return list(map(lambda x: block[x], table))def string_to_bits(data):data = [ord(c) for c in data]l = len(data)*8result = [0] * lpos = 0for ch in data:for i in range(0,8):result[(pos<<3)+i] = (ch>>i) & 1pos += 1return results_box = [54, 132, 138, 83, 16, 73, 187, 84, 146, 30, 95, 21, 148, 63, 65, 189, 188, 151, 72, 161, 116, 63, 161, 91, 37, 24, 126, 107, 87, 30, 117, 185, 98, 90, 0, 42, 140, 70, 86, 0, 42, 150, 54, 22, 144, 153, 36, 90, 149, 54, 156, 8, 59, 40, 110, 56,1, 84, 103, 22, 65, 17, 190, 41, 99, 151, 119, 124, 68, 17, 166, 125, 95, 65, 105, 133, 49, 19, 138, 29, 110, 7, 81, 134, 70, 87, 180, 78, 175, 108, 26, 121, 74, 29, 68, 162, 142, 177, 143, 86, 129, 101, 117, 41, 57, 34, 177, 103, 61, 135, 191, 74, 69, 147, 90, 49, 135, 124, 106, 19, 89, 38, 21, 41, 17, 155, 83, 38, 159, 179, 19, 157, 68, 105, 151, 166, 171, 122, 179, 114, 52, 183, 89, 107, 113, 65, 161, 141, 18, 121, 95, 4, 95, 101, 81, 156, 17, 190, 38, 84, 9, 171, 180, 59, 45, 15, 34, 89, 75, 164, 190, 140, 6, 41, 188, 77, 165, 105, 5, 107, 31, 183, 107, 141, 66, 63, 10, 9, 125, 50, 2, 153, 156, 162, 186, 76, 158, 153, 117, 9, 77, 156, 11, 145, 12, 169, 52, 57, 161, 7, 158, 110, 191, 43, 82, 186, 49, 102, 166, 31, 41, 5, 189, 27]def generate(o):k = permutate(s_box,o)b = []for i in range(0,len(k),7):b.append(k[i:i+7]+[1])c = []for i in range(32):pos = 0x = 0for j in b[i]:x += (j<<pos)pos += 1c.append((0x10001**x) % (0x7f))return cclass N1ES:def __init__(self,key):if (len(key) != 24 or isinstance(key,bytes) == False):raise Exception("key must be 24 bytes long")self.key = keyself.gen_subkey()def gen_subkey(self):o = string_to_bits(self.key)k = []for i in range(8):o = generate(o)k.extend(o)o = string_to_bits([chr(c) for c in o[0:24]])self.Kn = []for i in range(32):self.Kn.append(map(chr,k[i*8: i*8+8]))returndef decrypt(self,plaintext):res = ''for i in range(len(plaintext)/16):block = plaintext[i*16:(i + 1)*16] L = block[:8]R = block[8:]for round_cnt in range(32):L,R = R, (round_add(L, self.Kn[31-round_cnt]))L,R = R,Lres += L + Rreturn reskey = "wxy191iss00000000000cute" nles = N1ES(key) flag = base64.b64decode("HRlgC2ReHW1/WRk2DikfNBo1dl1XZBJrRR9qECMNOjNHDktBJSxcI1hZIz07YjVx") flag = nles.decrypt(flag) print (flag)運行得到 flag :
?
20?進制轉換
這里發(fā)現是 二進制、八進制、十進制、和十六進制 的混合編碼 ,需要統(tǒng)一化 再轉化為 字符
當然是不可能手工轉化的
寫了一個腳本(Python 中沒有 switch/case 的用法? 、進制轉化時需要將完整形式寫出來)
start_char = "d87 x65 x6c x63 o157 d109 o145 b100000 d116 b1101111 o40 x6b b1100101 b1101100 o141 d105 x62 d101 b1101001 d46 o40 d71 x69 d118 x65 x20 b1111001 o157 b1110101 d32 o141 d32 d102 o154 x61 x67 b100000 o141 d115 b100000 b1100001 d32 x67 o151 x66 d116 b101110 b100000 d32 d102 d108 d97 o147 d123 x31 b1100101 b110100 d98 d102 b111000 d49 b1100001 d54 b110011 x39 o64 o144 o145 d53 x61 b1100010 b1100011 o60 d48 o65 b1100001 x63 b110110 d101 o63 b111001 d97 d51 o70 d55 b1100010 d125 x20 b101110 x20 b1001000 d97 d118 o145 x20 d97 o40 d103 d111 d111 x64 d32 o164 b1101001 x6d o145 x7e" char = start_char.split(' ')#將字符串分割為一個數組 方便處理每一個數據 result = [] for c in char:if(c[0]=='d'): # 十進制result.append(c[1:])elif(c[0]=='x'): #16進制c = '0' + cresult.append(int(c,16))elif(c[0]=='o'):#8進制c = '0' + cresult.append(int(c,8))elif(c[0]=='b'):#2進制c = '0' +cresult.append(int(c,2))for i in result: #將十進制轉化為字符print(chr(int(i)),end="")得到:
Welcome to kelaibei. Give you a flag as a gift. flag{1e4bf81a6394de5abc005ac6e39a387b} . Have a good time~flag{1e4bf81a6394de5abc005ac6e39a387b}
?
21 affine(仿射)
題中? y = 17x-8? 是加密算法? ?
?flag中的是密文? flag{szzyfimhyzd}? 把?szzyfimhyzd 解密
查了一下 仿射密碼,七說八說的一大推 懶得看? 找了個在線解碼:不太好用?
看了別人的博客:
寫的不錯? 可以看一看https://blog.csdn.net/weixin_43858318/article/details/89202645
得到
flag{affineshift}
22,?Crack it(Linux shadow 文件解密)
沒有后綴名的文件 直接放進 winhex看一下:
得到:
root:$6$HRMJoyGA$26FIgg6CU0bGUOfqFB0Qo9AE2LRZxG8N3H.3BK8t49wGlYbkFbxVFtGOZqVIq3qQ6k0oetDbn2aVzdhuVQ6US.:17770:0:99999:7:::不知道是什么東西
看了一下別人的博客?
說是 Linux 中的 shadow文件? shadow文件是被加密過的
kali 中的 John 可以破解:(我沒操作,這里粘別人的過程)
解密出來居然是 hellokitty
flag{hellokitty}
23 rsa?
rsa 加密 我也不太懂? 這里找到了 一個 大佬的博客? ? :
https://blog.csdn.net/qq_40657585/article/details/84874073
按照大佬的writeup 操作一番
最后得到flag
flag{Wien3r_4tt@ck_1s_3AsY}
?
24 來自宇宙的信號(標準銀河字母)
查了一下是一種叫? 標注銀河字母 的 語言?
對照一下:
得到: nopqrst
得到flag :? flag{nopqrst}
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的bugku ——加密 做题记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sql-labs page2(21~3
- 下一篇: CTF——常见密码