1. 程式人生 > >實驗吧密碼學WriteUp(一)

實驗吧密碼學WriteUp(一)

這個系列的文章會將簡單的題目放在一起介紹,稍難的題目會單獨拿出來寫,現在開始。
1.js(題目連線:http://www.shiyanbar.com/ctf/1779
開啟網頁檢視原始碼,複製原始碼至Chrome的console,將程式碼中的eval改為console.log,回車後顯示
這裡寫圖片描述
一看就知道是unicode編碼,找網站線上解碼即可
這裡寫圖片描述

2.NSCTF crypto200(連線:http://www.shiyanbar.com/ctf/1768
儲存圖片至本地,使用stegsolve開啟
這裡寫圖片描述
變換後得到
這裡寫圖片描述
很像二維碼是吧?不過這個二維碼的黑白顏色完全相反,是掃不出來的,可以使用光影魔術手或者其他軟體的反色功能,得到如下二維碼,然後掃描即可得到flag
這裡寫圖片描述

3.NSCTF crypto50(連結:http://www.shiyanbar.com/ctf/1758
題目做多了就有感覺了一看就知道是AES加密,故線上AES解密

這裡寫圖片描述
直接提交,答案錯誤
仔細觀察,感覺可能用了凱撒移位
前5個字母按照flag的規律應是NSCTF,由此得到移位數
手工破解即可flag{NSCTF_Rot_EnCryption}

4.黑客叔叔(雨襲團)內部交流題(第一季1.0.2)(題目連結:http://www.shiyanbar.com/ctf/1744
先將字元放在同一行,因為編碼裡很少會出現漢字,故嘗試將“等等”變化為”==”,漢字變化為“/”
使用TripleDes解密
這裡寫圖片描述


接著Rabbit解密
這裡寫圖片描述
(我也不知道為什麼是這兩個演算法,多嘗試幾次看答案像的就是了,常見加密演算法有AES DES RC4 Rabbit TripleDes 等等)

5.simple algorithm(題目連結:http://www.shiyanbar.com/ctf/737
題目給了一個py指令碼和一個密文檔案,閱讀原始碼可知:py指令碼將明文轉換為密文,現在需要將密文檔案中的密文解密得到明文。 很明顯加密流程為將明文轉換為16進位制編碼,在轉化為10進位制數,將每兩位數字構成的數進行FAN函式運算,再拼接起來得到密文。
因此解密流程為:將0~99利用FAN函式求得加密值,建立加密值到原數的字典,在明文中查字典拼接得到10進位制數,轉化為16進位制數,再求取字串。
按照要求用python指令碼跑即可

-- coding: utf8 --

原始碼中的FAN()

def FAN(n, m):
i = 0
z = []
s = 0
while n > 0:
if n % 2 != 0:
z.append(2 - (n % 4))
else:
z.append(0)
n = (n - z[i])/2
i = i + 1
z = z[::-1]
l = len(z)
for i in range(0, l):
s += z[i] * m ** (l - 1 - i)
return s

def foo():
#讀取密文
s=open(“enc.txt”).read().strip()

#構造0~99對應的FAN()的值的字典
dct={}
for n in xrange(0,100):
    #key為FAN()的結果,value為n(位數補足到2位)
    dct[str((FAN(n,m=3)))]="%02d"%n

lst=[]
offset=0
while offset<len(s):
    #先從4個字元匹配直至1個字元
    for i in xrange(4,0,-1):
        tmp=s[offset:offset+i]
        if tmp in dct:
            lst.append(dct[tmp])
            offset+=i
            break
flag="".join(lst)

#python中s[i:i+2]不一定取到2個字元,
#如s="pcat",s[3:4]和s[3:5],甚至s[3:100]都是"t"
#此題中最後得到"09",但也可能是"9",故做下面的判斷
if len(hex(long(flag))[2:-1])%2!=0:
    flag=flag[:-2]+flag[-1]

flag=hex(long(flag))[2:-1].decode('hex')
print flag
pass

if name == ‘main‘:
foo()
print ‘ok’

flag:SIS{a9ab115c488a311896dac4e8bc20a6d7}

10.最近聽說劉翔離婚了(連結:http://www.shiyanbar.com/ctf/38
柵欄密碼
其實寫多了,套路就知道了
肯定是keyis{simplexue}