實驗吧-密碼學解題思路及答案(一)


1、JS

解題鏈接: http://ctf5.shiyanbar.com/crypto/2.html 

eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('<1 8="7/a">9(\'\\6\\3\\2\\5\\4\\b\\i\\h\\k\\j\\0\\g\\d\\c\\f\\0\\e\')',21,21,'u0065|script|u006d|u0069|u0054|u0043|u0053|text|type|alert|javascript|u0046|u006f|u0063|u007d|u0064|u006e|u006a|u007b|u005f|u0073'.split('|'),0,{}))

修改后:

console.log(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('<1 8="7/a">9(\'\\6\\3\\2\\5\\4\\b\\i\\h\\k\\j\\0\\g\\d\\c\\f\\0\\e\')',21,21,'u0065|script|u006d|u0069|u0054|u0043|u0053|text|type|alert|javascript|u0046|u006f|u0063|u007d|u0064|u006e|u006a|u007b|u005f|u0073'.split('|'),0,{}))

復制修改后的源碼到chrome到conlose中,將代碼中的eval該成console.log,按回車顯示。如下截圖:

打印后顯示的:

<script type="text/javascript">alert('\u0053\u0069\u006d\u0043\u0054\u0046\u007b\u006a\u0073\u005f\u0065\u006e\u0063\u006f\u0064\u0065\u007d')

顯示為unicode編碼,在網站在線解碼即可。

Unicode在線解碼網站:http://tool.chinaz.com/tools/unicode.aspx

答案:SimCTF{js_encode}

 

 

2、NSCTF crypto200(隱寫術)

小綠在黑進一台服務器后,在root文件夾下找到了一張圖片,據說圖片中有root的密碼,您能幫他找到嗎?

解題鏈接: http://ctf5.shiyanbar.com/crypto/newnewnew.jpg 

點進鏈接時如下的圖圖片:

 

安裝:stegsolve.jar(.jar文件下載后,選擇java方式打開即可)

通過變換后得到一張很像二維碼的圖片,保存這張圖片,使用光影魔術手(具有反色功能的軟件)然后得到如下的二維碼,用微信掃描后即可得到flag.

答案:flag{NSCTF_Qr_C0De}

3、NSCTF crypto50

答題鏈接:

神秘的字符串:U2FsdGVkX1+qtU8KEGmMJwGgKcPUK3XBTdM+KhNRLHSCQL2nSXaW8++yBUkSylRp

解題思路:

觀察密文應該是AES加密,使用AES在線解密工具進行解密。

在線解密平台:

http://tool.oschina.net/encrypt

 

解密之后得到明文:

flag{DISJV_Hej_UdShofjyed}

提交這個答案報錯。

猜想可能是凱撒移位,CTF平台的規律,前五個字母應該是NSCTF故而找出移位數為10,參照26位字母表,明碼表ABCDEFGHIJKLMNOPQRSTUVWXYZ找出對應的密文。

進過凱撒解密后的flag為NSCTF_Rot_EnCryption

答案:flag{NSCTF_Rot_EnCryption}

4、黑客叔叔(雨襲團)內部交流題(第一季1.0.2)

題目鏈接: http://ctf5.shiyanbar.com/crypto/1.html

上次的1.0.1大家貌似玩的很爽,有人都加好友來走后門了,如果你要研究密碼學什么的,最好先去研究下編碼,最簡單的編碼,你也不一定足夠了解他,你看,上一題1.0.1大家就被自己坑了吧?密碼學的題目會循序漸進的增加難度的,總共8~10題。然后換web?逆向? 大家持續關注吧! 那么1.0.2就如下咯:

U2FsdGVkX18vmjE0tvWk69T女B神u9inuiNnM3rBhsu6tXzLhu+

iofwuHNHq3YtDKs8ZlYLvSZuUY+

mxLRKO7+

m254R5YTCW8yzzgD+

mGwWfGRgqmPKdD你xA等等

hint:女神你等等?

解題思路:一般編碼中很少會出現漢字,將漢字改成/,等等換成==

在線解密平台:

http://tool.oschina.net/encrypt

修改后的密文:

U2FsdGVkX18vmjE0tvWk69T/B/u9inuiNnM3rBhsu6tXzLhu+

iofwuHNHq3YtDKs8ZlYLvSZuUY+

mxLRKO7+

m254R5YTCW8yzzgD+

mGwWfGRgqmPKdD/xA==

hint:///==?

 

 

解密后:只有TripleDes出現明文說明,解密正確

U2FsdGVkX19RFyuUWyBHLNo8ldVPSkFpTB/lG07bZIL1rSAa/L0jFRGdvPh//8W4uZHe

但是結果依然是加密的形式,繼續解密。

只有Rabbit出現了明文說明,該加密方式就是它

RainRaid_Flag_Rabbit&TripleDes_Nice

 

答案:RainRaid_Flag_Rabbit&TripleDes_Nice

5、simple algorithm

The flag is encrypted by this code, can you decrypt it after finding the system?

解題鏈接: http://ctf5.shiyanbar.com/crypto/simple_algorithm.zip

點擊后下載的文件:

題目給了一個py腳本和一個密文文件,閱讀源碼可知:py腳本將明文轉換為密文,現在需要將密文文件中的密文解密得到明文。 很明顯加密流程為將明文轉換為16進制編碼,在轉化為10進制數,將每兩位數字構成的數進行FAN函數運算,再拼接起來得到密文。 
因此解密流程為:將0~99利用FAN函數求得加密值,建立加密值到原數的字典,在明文中查字典拼接得到10進制數,轉化為16進制數,再求取字符串。 
按照要求用python腳本跑即可。

題目中給的腳本:

#!/usr/bin/python

 

flag = '[censored]'

hflag = flag.encode('hex')

iflag = int(hflag[2:], 16)

 

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

 

i = 0

r = ''

while i < len(str(iflag)):

    d = str(iflag)[i:i+2]

    nf = FAN(int(d), 3)

    r += str(nf)

    i += 2

 

print r

解題腳本:

import simple_algorithm

s=open("enc.txt").read().strip()

#構造0~99對應的FAN()的值的字典

dct={}

for n in xrange(0,100):

    #key為FAN()的結果,value為n(位數補足到2位)

    dct[str((simple_algorithm.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

答案:SIS{a9ab115c488a311896dac4e8bc20a6d7}

 6、密文rot13

57R9S980RNOS49973S757PQO9S80Q36P (md5不解密)

解題思路:直接root13解密就行了。

Root13在線解密工具

http://www.mxcz.net/tools/rot13.aspx

 

答案:57E9F980EABF49973F757CDB9F80D36C

7、Keyboard

解題鏈接: http://ctf5.shiyanbar.com/360/keyboard.html 

提示和鍵盤有關,打開鏈接后出現如下:

BHUK,LP TGBNHGYT BHUK,LP UYGBN TGBNHGYT BHUK,LP BHUK,LP TGBNHGYT BHUK,LP TGBNHGYT UYGBN

根據提示,在鍵盤上排列出英文字母:

BHUK,LP對應N,TGBNHGYT對應B,UYGBN對應C。

答案:NBNCBNNBNBC

8、凱撒是羅馬共和國傑出的軍事統帥

解題鏈接: http://ctf5.shiyanbar.com/crypto/1/kai.html 

點開鏈接后:

MGAKUZKRWZWGAWCP

解碼代碼:(python2.7)

#實現97-122小寫ASCII字母(默認) 

def change(c,i): 

    c=c.lower() 

    num=ord(c) 

    if(num>=97 and num<=122):   

        num=97+(num+i-97)%(26)   

    return chr(num)   

 

       

def kaisa_jiAmi(string,i):   

    string_new=''   

    for s in string:   

        string_new+=change(s,i)   

    print(string_new)   

    return string_new   

   

#本題有種暴力解密感覺   

def kaisa_jiEmi(string):   

    for i in range(0,26):   

        print('第'+str(i+1)+'種可能:')   

        #區別在於 string 是該對象原本就是字符串類型, 而 str()則是將該對象轉換成字符串類型。   

        kaisa_jiAmi(string,i)   

           

#你要知道input輸入的數據類型都是string      

def main():   

    print('請輸入操作,注意默認小寫,大寫同理:')   

    choice=raw_input('1:愷撒加密,2:凱撒窮舉解密.請輸入1或2:')   

    if choice=='1':   

        string=raw_input('請輸入需要加密字符串: ')   

        num=int(raw_input('請輸入需要加密的KEY: '))   

        kaisa_jiAmi(string,num)    

    elif choice=='2':   

        string=raw_input('請輸入需要解密字符串: ')    #python2.7輸入用這種形式

        kaisa_jiEmi(string)   

    else:   

        print('輸入錯誤,請重試')   

        main()   

           

if __name__=='__main__':   

    main()   

 運行之后有26種可能性:

觀察第25種最像結果

答案:xipuxueyuan   

9、摩擦摩擦

http://ctf5.shiyanbar.com/crypto/1/beiai.html

密文:

.-- . .-.. -.-. --- -- . - --- -..- .. .--. ..- -..- ..- . -.-- ..- .- -.

在線摩斯密碼解題:

http://www.jb51.net/tools/morse.htm

 

答案:welcometoxipuxueyuan

10、最近聽說劉翔離婚了

kyssmlxeei{ipeu}

解題鏈接: http://ctf5.shiyanbar.com/crypto/1/lan.html

柵欄密碼

在線解密:

http://www.qqxiuzi.cn/bianma/zhalanmima.php(柵欄密碼在線解密工具)

密文:kyssmlxeei{ipeu}

明文:keyis{simplexue}

答案:{simplexue}(提交的格式)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM