idf幾道CTF的解法
阿新 • • 發佈:2019-01-30
不怎麼玩CTF,偶爾玩一下,還是有點意思。
地址:http://ctf.idf.cn/
WEB狗主要玩了【牛刀小試】和【天羅地網】
被改錯的密碼
這道題其實蠻簡單的,就是解密:cca9cc444e64c8116a30la00559c042b4
第一眼看猜測是MD5,不過是33位字串,就用Hash-Identifier跑了一下居然是 SSHA-1
這裡我有點納悶,看了下SSHA-1的演算法資料,並解不出來;
我想了下,既然是被改錯,那很可能是增加了一位的MD5加密。
so,兩個思路:
1. 查詢MD5表,一位一位去掉,然後遍歷的查詢;
2. 字典生成MD5,然後特徵比對。
我用了第二種方法。
字典用了常用的,然後把這個站點的域名、名詞都丟了進去;
特徵也就判斷前四位或者後四位相同即可;
參考程式碼如下(passwd.txt是字典檔案,把idf, ctf, ctf.idf.cn, idf.cn這些都扔了進去):
def md5_crack(): key = "cca9cc444e64c8116a30la00559c042b4" p = open("passwd.txt") ct = 0 while 1: lines = p.readlines(1000) if not lines: break for line in lines: ct += 1 passwd = line.strip() md5_p = hashlib.md5(passwd).hexdigest() if md5_p[:4] == key[:4] or md5_p[-4:] == key[-4:]: print "wctf{%s}" %passwd, md5_p p.close()
果真如此,跑出來結果如下:
wctf{idf} cca9cc444e64c8116a30a00559c042b4
聰明的小羊
這個沒啥難度,一看就加密,就柵欄密碼用py簡單的寫了個解密:
def fence_decrypt(): key = "tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren." key_length = len(key) chunk = [] # 分組可能性 for i in range(2, key_length): if key_length%i == 0: chunk.append(i) for c in chunk: print "分為%s" %(c) b = key_length / c dec_key = "" tmp_dict = {} # 拆分 for mod in range(b): #print mod for k, v in enumerate(key[mod*c:(mod+1)*c]): if mod not in tmp_dict: tmp_dict[mod] = v else: tmp_dict[mod] += v # 合併 #print tmp_dict for i in range(c): for x in tmp_dict: dec_key += tmp_dict[x][i] print dec_key
啥?
這道題細心一點就知道了,看到了這個圖片,就知道答案了。直接看圖片二進位制,輕鬆找到答案。
古老的郵件編碼
這個有點意思,以前還不知道有這個編碼,UU編碼。 python支援uu解碼,so毫無難度,最後中文轉換一下編碼即可def uu_encode():
uu_begin = """begin 666 <data>
"""
uu_end = """
end
"""
content = """MR,O)^KNYU>;*Q[*[P_?#Q+"AHZS6Q\G,LKNYNZ.LR;;2LK*[N^&CK+/VN/;,
MXK:\TJJ]RKZAQ-36K:&CH:,*M/.XQ;3PL+B^S<K'U>+1^;#)=V-T9GMU=75U
*=65N8V]D95]??0``"""
uu_str = uu_begin+content+uu_end
print uu_str
print uu_str.decode("uu").decode("gb2312")
不難不易的js加密
JS的題還算比較簡單,不過太久沒看JS,解這道題花了半小時。。。。。
首先要讀懂JS,不過還蠻有意思的。
印象中要fuzz一下字串,跑一下MD5,jiami,其他的沒啥問題。
其他的題目基本都沒啥難點,可能