日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

buu [HDCTF2019]basic rsa

發(fā)布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 buu [HDCTF2019]basic rsa 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

下載得到一個py

類型:n+e+c+p+q= m
注釋中就是該腳本生成的c
使用腳本RSA各題型腳本\n+e+c+p+q= m
直接套用腳本

import random from binascii import a2b_hex,b2a_hex p = 262248800182277040650192055439906580479 q = 262854994239322828547925595487519915551 n = p * q def multiplicative_inversr(a,b):x = 0y = 1lx = 1ly = 0oa = aob = bwhile b != 0:q = a // b(a, b) = (b, a % b)(x, lx) = ((lx - (q * x)), x)(y, ly) = ((ly - (q * y)), y)if lx < 0:lx += obif ly < 0:ly += oareturn lx def gcd(a,b):while b != 0:a, b = b, a % breturn a def generate_keypair(p,q):n = p * qphi = (p - 1) * (q -1)e = 65533g = gcd(e, phi)while g != 1:e = random.randrange(1, phi)g = gcd(e, phi)d = multiplicative_inversr(e, phi)return ((e,n),(d,n)) def encrypt(pk, plaintext):key, n = pk[0]print(b2a_hex(plaintext.encode()))cipher = pow(int(b2a_hex(plaintext.encode()),16), key , n)return cipher def decrypt(pk, cipher):key, n = pk[1]cipher = pow(cipher, key ,n)cipher = a2b_hex(hex(cipher).split('0x')[1])return cipher pk = generate_keypair(p,q) cipher = 27565231154623519221597938803435789010285480123476977081867877272451638645710 plaintext = decrypt(pk, cipher) print(plaintext)

運(yùn)行得到flag 提交即可

解題思路
首先這道題題目是達(dá)芬奇密碼,百度之后發(fā)現(xiàn)這是一部電影,當(dāng)時也沒想的去看一下電影的簡介什么的,后面加buuctf關(guān)鍵字,也沒有找到相應(yīng)的wp。果斷google,找到大佬的wp,發(fā)現(xiàn)在電影簡介中會提到——斐波那契數(shù)列。

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309
1
對比蒙娜麗莎中的數(shù)字列,發(fā)現(xiàn)數(shù)值一樣,但是進(jìn)行了位移。

之后對比,題目中給到的兩個數(shù)列的長度都是32,并且flag也是32位,可以推測,神秘數(shù)列是通過flag位移后得出的,而位移的規(guī)則是斐波那契數(shù)列的位移。

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309

1 233 3 2584 1346269 144 5 196418 21 1597 610 377 10946 89 514229 987 8 55 6765 2178309 121393 317811 46368 4181 1 832040 2 28657 75025 34 13 17711

36968853882116725547342176952286
1
2
3
4
5
6
7
規(guī)則如下:

第零位1還是1,沒有位移。

第一位233是斐波那契數(shù)列的第十二位(以0開始算),因此下面神秘數(shù)字串的第一位的6是原本flag的第十二位。

第二位3是斐波那契數(shù)列的第三位,因此下面神秘數(shù)字串的第二位的9是原本flag的第三位。

以此類推…,寫出如下腳本。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的buu [HDCTF2019]basic rsa的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。