【RSA】SCTF 2016 RSA套餐

0x01 Level 0

這道題給了一個加密的文件,是base64的,一個public.key公鑰還有通往下一關的壓縮包。
首先,用openssl查看公鑰信息

openssl rsa -in public.key -pubin -text -modulus -noout

得到了公鑰信息

Public-Key: (2048 bit)
Modulus:
    00:94:a0:3e:6e:0e:dc:f2:74:10:52:ef:1e:ea:a8:
    89:d6:f9:8d:01:11:51:db:5e:90:92:48:fd:39:0c:
    70:87:24:d8:98:3c:f3:33:1c:ba:c5:61:c2:ce:2c:
    5a:f1:5e:65:b2:b2:46:91:56:b6:19:d5:d3:b2:a6:
    bb:a3:7d:56:93:99:4d:7e:4c:2f:aa:60:7b:3e:c8:
    fc:90:b2:00:62:4b:53:18:5b:a2:30:10:60:a8:21:
    ab:61:57:d7:e7:cc:67:1b:4d:cd:66:4c:7d:f1:1a:
    2a:1d:5e:50:80:c1:5e:45:12:3a:ba:4a:53:64:d8:
    72:1f:84:4a:ae:5c:55:02:e8:8e:56:4d:38:70:a5:
    16:36:d3:bc:14:3e:2f:ae:2f:31:58:ba:00:ab:ac:
    c0:c5:ba:44:3c:29:70:56:01:6b:57:f5:d7:52:d7:
    31:56:0b:ab:0a:e6:8d:ad:08:22:a9:1f:cb:6e:49:
    cc:01:4c:12:d2:ab:a3:a5:97:e5:10:49:19:7f:69:
    d9:3b:c5:53:53:71:00:18:60:cc:69:1a:06:64:3b:
    86:94:70:a9:da:82:fc:54:6b:06:23:43:2d:b0:20:
    eb:b6:1b:91:35:5e:53:a6:e5:d8:9a:84:bb:30:46:
    b8:9f:63:bc:70:06:2d:59:d8:62:a5:fd:5c:ab:06:
    68:81
Exponent: 65537 (0x10001)
Modulus=94A03E6E0EDCF2741052EF1EEAA889D6F98D011151DB5E909248FD390C708724D8983CF3331CBAC561C2CE2C5AF15E65B2B2469156B619D5D3B2A6BBA37D5693994D7E4C2FAA607B3EC8FC90B200624B53185BA2301060A821AB6157D7E7CC671B4DCD664C7DF11A2A1D5E5080C15E45123ABA4A5364D8721F844AAE5C5502E88E564D3870A51636D3BC143E2FAE2F3158BA00ABACC0C5BA443C297056016B57F5D752D731560BAB0AE68DAD0822A91FCB6E49CC014C12D2ABA3A597E51049197F69D93BC5535371001860CC691A06643B869470A9DA82FC546B0623432DB020EBB61B91355E53A6E5D89A84BB3046B89F63BC70062D59D862A5FD5CAB066881

將得到的Modulus是十六進制的,用python(比在線網(wǎng)站好用多了,直接int(0x94A0.....))將它轉(zhuǎn)換為十進制的數(shù),嘗試放到http://www.factordb.com/index.php進行分解,分解成功,得到

p = 250527704258269
q = 74891071972884336452892671945839935839027130680745292701175368094445819328761543101567760612778187287503041052186054409602799660254304070752542327616415127619185118484301676127655806327719998855075907042722072624352495417865982621374198943186383488123852345021090112675763096388320624127451586578874243946255833495297552979177208715296225146999614483257176865867572412311362252398105201644557511678179053171328641678681062496129308882700731534684329411768904920421185529144505494827908706070460177001921614692189821267467546120600239688527687872217881231173729468019623441005792563703237475678063375349

能分解原因是因為一個因數(shù)太小了。
然后利用這個p,q生成私鑰,用rsatools這個工具,在github上能夠找到。
生成priv.key。
在解密之前,要將加密文件base64解密,可以寫一個python腳本進行解密。
當用生成的私鑰進行解密的時候,openssl報錯了,所以可能是對明文進行填充了。關于填充的方式,感興趣的小伙伴可以看一下https://my.oschina.net/u/1377935/blog/749195
這道題是采用了oaep模式進行填充的,具體為什么我也不清楚,看了別人的writeup才知道的。
然后

openssl rsautl -decrypt -inkey priv.key -in encrypt.enc -out data.txt -oaep

得到密碼

0x02 Level 1

這道題還是老規(guī)矩,openssl查看Modulus信息,轉(zhuǎn)換到10進制,然后進行分解。
這次放到那個網(wǎng)站后發(fā)現(xiàn)分解不出來了,就很尷尬。。不過我們還有另外一個利器,叫做yafu,

yafu factor(n)

真的分解出來了p和q!

p=156956618844706820397012891168512561016172926274406409351605204875848894134762425857160007206769208250966468865321072899370821460169563046304363342283383730448855887559714662438206600780443071125634394511976108979417302078289773847706397371335621757603520669919857006339473738564640521800108990424511408496383
q=156956618844706820397012891168512561016172926274406409351605204875848894134762425857160007206769208250966468865321072899370821460169563046304363342283383730448855887559714662438206600780443071125634394511976108979417302078289773847706397371335621757603520669919857006339473738564640521800108990424511408496259

然后利用第一關的步驟,openssl解密,不過這里不同的是這里的padding使用了pkcs方式。
最后得到密碼

0x03 Level 2

老規(guī)矩,openssl查看公鑰,這次信息中除了n還有e,我們可以看到e和n的長度差不多,那么應該就是wiener attack,直接利用wiener attack利用腳本,輸入e和n,得到了d的值,利用rsatools

rsatools -e -d -n -o 

生成了rsa私鑰,利用這個私鑰用openssl進行解密,得到密碼

0x04 Level 3

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 2018-Read-Record 記錄我的2018學習歷程 文中首先解釋了加密解密的一些基礎知識和概念,然后通過一...
    NinthDay閱讀 11,454評論 8 105
  • 1 基礎 1.1 對稱算法 描述:對稱加密是指加密過程和解密過程使用相同的密碼。主要分:分組加密、序列加密。 原理...
    御淺永夜閱讀 2,716評論 1 4
  • 文中首先解釋了加密解密的一些基礎知識和概念,然后通過一個加密通信過程的例子說明了加密算法的作用,以及數(shù)字證書的出現(xiàn)...
    已認證用戶閱讀 3,987評論 1 4
  • 補了幾篇社群文。說實話,覺得都是一些雞湯類文字,對自己觸動不是很大,也許自己沒有用心看的緣故吧。 說到這個,想起熊...
    卡卡22閱讀 242評論 0 1
  • 自己的生活 就算頹廢到爛掉 也不會有人來幫你調(diào)整 能改變自己生活的只有你自己 1.堅持寫作練習 2.不懈學習新語...
    魚醬醬閱讀 205評論 0 0

友情鏈接更多精彩內(nèi)容