CTF中的加密問題

   練習題中是一些加解密小練習題,可以參考加解密小結1加解密小結2中的特徵對應進行加解密。可以利用工具

RSA練習題:python腳本解RSA,腳本代碼爲(這裏給出了p,q實際做題過程中是需要利用工具解p,q):

#!/usr/bin/env python


import gmpy
from Crypto.PublicKey import RSA

n = 41069065654959614597750207738698085798765257876378561837894254544512565197793
c = 27990707239527629138352696377606718299992092729307910015562504696905353450041
e = long(11)

p = 218538667198531171522213512860093810267
q = 187925853952657607512617865502535480179

d = long(gmpy.invert(e,(p-1)*(q-1)))

key = RSA.construct((n,e,d))

print key

print key.decrypt(c)

print hex(key.decrypt(c))

print hex(key.decrypt(c))[2:-1].decode('hex')

上面腳本中給出了p,q。做題過程中可以利用 yafu-1.34大數分解N 工具來求解p,q。解壓後的文件爲:

雙擊運行yafu-Win32.exe,用命令factor(N)來大數分解N

分解前,將factor.log中的內容清空。分解過程太快了,來不及截圖,分解完成後,在factor.log中可以得到分解的p,q:

然後運行rsa腳本解題得:

紅色部分即爲flag,這裏我是在kali中運行的腳本。

再來一道加解密的題,題目:

0x253464253534253435253335253433253661253435253737253464253531253666253738253464253434253637253462253466253534253662253462253464253534253435253738253433253661253435253737253466253531253666253738253464253434253435253462253464253534253435253332253433253661253435253738253464253531253666253738253464253534253535253462253464253534253431253330253433253661253435253737253465253531253666253738253464253661253435253462253466253534253633253462253464253534253435253737253433253661253662253334253433253661253662253333253433253661253435253738253465253431253364253364

編寫python腳本:decode.py:

str='253464253534253435253335253433253661253435253737253464253531253666253738253464253434253637253462253466253534253662253462253464253534253435253738253433253661253435253737253466253531253666253738253464253434253435253462253464253534253435253332253433253661253435253738253464253531253666253738253464253534253535253462253464253534253431253330253433253661253435253737253465253531253666253738253464253661253435253462253466253534253633253462253464253534253435253737253433253661253662253334253433253661253662253333253433253661253435253738253465253431253364253364'

def HexDe(str):
    decstr = ''
    for i in range(0,len(str),2):
        decstr +=chr(int(str[i:i + 2],16))
    return decstr

print(HexDe(str))

運行得:

明顯看出是url編碼,利用工具解碼:

解出的答案爲:

MTE5CjEwMQoxMDgKOTkKMTExCjEwOQoxMDEKMTE2CjExMQoxMTUKMTA0CjEwNQoxMjEKOTcKMTEwCjk4Cjk3CjExNA==

base64解碼之:

得到一串數字:119 101 108 99 111 109 101 116 111 115 104 105 121 97 110 98 97 114,然後ASCII轉字符得:

得到:welcometoshiyanbar,即爲flag。題目及工具

再來看一個柵欄解碼題目:Alice和Bob用柵欄密碼傳遞了一個消息,解開它。cytgahicorporpysol

利用工具解得:

題目及工具。最後來上傳一個密碼學文檔題目資料彙總

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章