BUUCTF crypto 2
BUUCTF
Unencode
89FQA9WMD<V1A<V1S83DY.#<W3$Q,2TM] |
http://www.hiencode.com/uu.html 用UTF-8 decoder,得到flag。
[AFCTF2018]Morse
-..../.----/-..../-..../-..../...--/--.../....-/-..../-..../--.../-.../...--/.----/--.../...--/..---/--.../--.../....-/...../..-./--.../...--/...--/-----/...../..-./...--/...--/...--/....-/...--/...../--.../----./--.../-.. |
感覺就是摩斯密碼,透過 http://moersima.00cha.net/cn.asp 轉換成
61666374667b317327745f73305f333435797d |
再將hex to ascii,得到flag。
robomunication
題目是一段mp3,聽到耳朵死掉,本來以為是長短音,沒想到是逼啵。
…. . .-.. .-.. — .– …. .- - .. … - …. . -.- . -.– .. - .. … -… — — .–. -… . . .–. |
翻譯一下變成
HELLOWHATISTHEKEYITISBOOPBEEP |
加上空格之後看到flag,真的會聽到暴躁。
HELLO WHAT IS THE KEY IT IS BOOPBEEP |
Dangerous RSA
#n: 0x52d483c27cd806550fbe0e37a61af2e7cf5e0efb723dfc81174c918a27627779b21fa3c851e9e94188eaee3d5cd6f752406a43fbecb53e80836ff1e185d3ccd7782ea846c2e91a7b0808986666e0bdadbfb7bdd65670a589a4d2478e9adcafe97c6ee23614bcb2ecc23580f4d2e3cc1ecfec25c50da4bc754dde6c8bfd8d1fc16956c74d8e9196046a01dc9f3024e11461c294f29d7421140732fedacac97b8fe50999117d27943c953f18c4ff4f8c258d839764078d4b6ef6e8591e0ff5563b31a39e6374d0d41c8c46921c25e5904a817ef8e39e5c9b71225a83269693e0b7e3218fc5e5a1e8412ba16e588b3d6ac536dce39fcdfce81eec79979ea6872793L |
從題目來看,很明顯就是小明文攻擊,e很小的情況下直接暴力破解就可以了,送分題。
import gmpy2 |
[HDCTF2019]basic rsa
題目給了一個python的程式如下。
import gmpy2 |
不管其他花裏胡俏的東西,這就是一個有c, n, e逆向破解的題目,直接硬幹就好,c的值應該是最下面的註解。
from Crypto.Util.number import * |
拿到flag。
[GUET-CTF2019]BabyRSA
p+q : 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e80cf30141282c97be4400e33307573af6b25e2ea |
有點小酷,嘗試透過一些基本的數學運算看看能不能拆出p, q,把它變成已知c, d, n下解密的RSA。
p_add_q = 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e80cf30141282c97be4400e33307573af6b25e2ea |
得到flag。
密碼學的心聲
二戰時期,某國軍官與一個音樂家情婦相好,然而自從那時起,他屢戰屢敗,敵人似乎料事如神。他也有懷疑過他的情婦,但是他經過24小時觀察他的情婦,發現她每天都只是作曲,然後彈奏給戰地電台,為士兵們鼓氣,並未有任何逾越。那麼,間諜到底是誰?這張曲譜是否有貓膩?(答案為一個明文字符串,提交獲得的有意義語句通順字符串即可)
裡面有一句這裡面沒有八,看起來是八進制的解碼,先把樂譜打出來,並轉成16進位。
c = 0o111114157166145123145143165162151164171126145162171115165143150 |
然後轉base64和ascii都爆了,最後藉由1出現的有點多,分組後發現是八進位的ascii,哭阿。
c = '111 114 157 166 145 123 145 143 165 162 151 164 171 126 145 162 171 115 165 143 150' |
拿到flag,我要死掉了。
[BJDCTF2020]這是base??
dict:{0: 'J', 1: 'K', 2: 'L', 3: 'M', 4: 'N', 5: 'O', 6: 'x', 7: 'y', 8: 'U', 9: 'V', 10: 'z', 11: 'A', 12: 'B', 13: 'C', 14: 'D', 15: 'E', 16: 'F', 17: 'G', 18: 'H', 19: '7', 20: '8', 21: '9', 22: 'P', 23: 'Q', 24: 'I', 25: 'a', 26: 'b', 27: 'c', 28: 'd', 29: 'e', 30: 'f', 31: 'g', 32: 'h', 33: 'i', 34: 'j', 35: 'k', 36: 'l', 37: 'm', 38: 'W', 39: 'X', 40: 'Y', 41: 'Z', 42: '0', 43: '1', 44: '2', 45: '3', 46: '4', 47: '5', 48: '6', 49: 'R', 50: 'S', 51: 'T', 52: 'n', 53: 'o', 54: 'p', 55: 'q', 56: 'r', 57: 's', 58: 't', 59: 'u', 60: 'v', 61: 'w', 62: '+', 63: '/', 64: '='} |
感覺是替換加密,拿base64依照字典做decoder,不知道會不會搞,但就先建字典做轉換。
import base64 |
取得flag。
RSA2
N = 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241962525705950046253400188884658262496534706438791515071885860897552736656899566915731297225817250639873643376310103992170646906557242832893914902053581087502512787303322747780420210884852166586717636559058152544979471 |
題目給出的資訊中,少了d,因此先查md5的加密,好像沒有結果,後來想想應該是靠N, e求d再做MD5雜湊加密而已,這樣就好做ㄌ。
N = 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241962525705950046253400188884658262496534706438791515071885860897552736656899566915731297225817250639873643376310103992170646906557242832893914902053581087502512787303322747780420210884852166586717636559058152544979471 |
然後弄出來的flag{cb51252e8f42f4f84aa9fb5b41e141ff}沒過,應該是因為python2和3的算出來的結果會不一樣,python2的hex會在字尾多加一個L,所以補上就好。
N = 101991809777553253470276751399264740131157682329252673501792154507006158434432009141995367241962525705950046253400188884658262496534706438791515071885860897552736656899566915731297225817250639873643376310103992170646906557242832893914902053581087502512787303322747780420210884852166586717636559058152544979471 |
取得flag。
RSA5
m = xxxxxxxx |
原本以為是共模攻擊,仔細看了一下發現是模不互素,
import gmpy2 |
透過因數分解拆拆看能不能拆出共同質因數p
p = 132585806383798600305426957307612567604223562626764190211333136246643723811046149337852966828729052476725552361132437370521548707664977123165279305052971868012755509160408641100548744046621516877981864180076497524093201404558036301820216274968638825245150755772559259575544101918590311068466601618472464832499 |
拆出來之後就可以靠p, q來計算d,有了d之後可以進行解密動作。
p = 132585806383798600305426957307612567604223562626764190211333136246643723811046149337852966828729052476725552361132437370521548707664977123165279305052971868012755509160408641100548744046621516877981864180076497524093201404558036301820216274968638825245150755772559259575544101918590311068466601618472464832499 |
拿到flag,舒服。