自從開始玩CTF后,發現這個游戲還是比較有意思,發現了一個練習場地IDF實驗室:http://ctf.idf.cn/
刷刷里面的題目,今天完成了其中的牛刀小試,分享一下解題思路:
1. 被改錯的密碼
題目為:
從前有一個熊孩子入侵了一個網站的數據庫,找到了管理員密碼,手一抖在數據庫中修改了一下,現在的密碼變成了 cca9cc444e64c8116a30la00559c042b4,那個熊孩子其實就是我!腫么辦求解!在線等,挺急的。。
PS:答案格式wctf{管理員原密碼}
第一眼看上去cca9cc444e64c8116a30la00559c042b4是一個MD5,但是確是33位,那么循環去掉一位解密,直到解出來正確:(http://pmd5.com)MD5在線解密
最后去掉l字符,解密成功

所以flag是wctf{idf}
2. 啥?

題目就一張圖片和一串文字,看來只有在圖片上做文章了,下載圖片,拖入UltraEdit中去,
看了看,在底部發現了ctf的字樣,

復制出來:wctf{mianwubiaoqing__},提交,答案不對。
根據第一題,這個好像少了個w,加上去,
wwctf{mianwubiaoqing__}通過。
3. ASCII碼而已
題目一個字符串:
\u5927\u5bb6\u597d\uff0c\u6211\u662f\u0040\u65e0\u6240\u4e0d\u80fd\u7684\u9b42\u5927\u4eba\uff01\u8bdd\u8bf4\u5fae\u535a\u7c89\u4e1d\u8fc7\u767e\u771f\u7684\u597d\u96be\u3002\u3002\u0077\u0063\u0074\u0066\u007b\u006d\u006f\u0072\u0065\u006d\u006f\u0072\u0065\u005f\u0077\u0065\u0069\u0062\u006f\u005f\u0066\u0061\u006e\u0073\u007d
題目就一堆字符串,一個unicode編碼,寫個python腳本轉換一下即可:
#!/usr/bin/env python # -*- coding: utf-8 -*- str = u'\u5927\u5bb6\u597d\uff0c\u6211\u662f\u0040\u65e0\u6240\u4e0d\u80fd\u7684\u9b42\u5927\u4eba\uff01\u8bdd\u8bf4\u5fae\u535a\u7c89\u4e1d\u8fc7\u767e\u771f\u7684\u597d\u96be\u3002\u3002\u0077\u0063\u0074\u0066\u007b\u006d\u006f\u0072\u0065\u006d\u006f\u0072\u0065\u005f\u0077\u0065\u0069\u0062\u006f\u005f\u0066\u0061\u006e\u0073\u007d' str = str.encode('utf-8') print str
得到flag:

wctf{moremore_weibo_fans}
4. 摩斯密碼
用python腳本跑一下摩斯密碼:
# -*- coding:utf-8 -*- # 摩斯密碼表(自己可定義加密方式...) CODE = { # 26個字母 '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': '--..', # 10個數字 '0': '-----', '1': '.----', '2': '..---', '3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...', '8': '---..', '9': '----.', # 16個標點符號 ',': '--..--', '.': '.-.-.-', ':': '---...', ';': '-.-.-.', '?': '..--..', '=': '-...-', "'": '.----.', '/': '-..-.', '!': '-.-.--', '-': '-....-', '_': '..--.-', '(': '-.--.', ')': '-.--.-', '$': '...-..-','&': '. . . .','@': '.--.-.' # 下面還可自行添加密碼字典 } # print CODE # 反轉字典(作為解密摩斯密碼的字典) UNCODE = dict(map(lambda t:(t[1],t[0]),CODE.items())) # print UNCODE ''' 將字符串轉換成摩斯密碼 params:需要轉換的字符串 ''' def stringToMorseAlphabet(msg): # message用於保存加密結果 message = '' # msg = raw_input('Message:') # msg = 'this is test' print msg + ' ///對應的摩斯密碼為///', for c in msg: if c == ' ': message += ' ' else: # upper():將所有小寫字母轉換成大寫字母 message += CODE[c.upper()] + ' ' return message ''' 將摩斯密碼還原成字符串 params:需要還原的摩斯碼 ''' def morseAlphabetToString(morseCode): # message用於保存解密結果 message = '' list = morseCode.split(' ') # print list #print morseCode + ' ///對應的明文為///', for s in list: if s == '': message += ' ' else: message += UNCODE[s] return message # Test # print stringToMorseAlphabet('I love you') #print morseAlphabetToString(stringToMorseAlphabet('what the fuck!')) print morseAlphabetToString('-- --- .-. ... . -.-. --- -.. . ')

得到flag:
wctf{M O R S E C O D E}
但是有點無語,提交不正確,改成小寫,把空格去了提交過了,有點不知所措:
wctf{morsecode}
5.聰明的小羊
首先看題目描述:
一只小羊跳過了柵欄,兩只小樣跳過了柵欄,一坨小羊跳過了柵欄...
tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren.
目測應該是柵欄密碼。何為柵欄密碼,這種密碼和凱撒密碼類似都是移位密碼,不同的事,柵欄密碼先將一個字符串分成N組,然后依次取出每個組的第一個字符第二個字符組合成新的數據。
然后暴力破解即可,窮舉其長度的因子:用python寫個腳本跑一下:
#!/usr/bin/env python # -*- coding: utf-8 -*- def zhanlan(midata = None, zu = 0, len = 0 ): mindata='' for i in range(zu): for j in range(len): mindata = mindata+midata[i+zu*j] return mindata if __name__ == '__main__': midata="tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren." for zu in range(1,len(midata),1): if len(midata)%zu == 0: print zhanlan(midata,zu,len(midata)/zu)
最后得到flag:

wctf{C01umnar}
