buu [HDCTF2019]basic rsa
下載得到一個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 = 0
y = 1
lx = 1
ly = 0
oa = a
ob = b
while 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 += ob
if ly < 0:
ly += oa
return lx
def gcd(a,b):
while b != 0:
a, b = b, a % b
return a
def generate_keypair(p,q):
n = p * q
phi = (p - 1) * (q -1)
e = 65533
g = 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)
執行得到flag 提交即可
解題思路
首先這道題題目是達芬奇密碼,百度之後發現這是一部電影,當時也沒想的去看一下電影的簡介什麼的,後面加buuctf關鍵字,也沒有找到相應的wp。果斷google,找到大佬的wp,發現在電影簡介中會提到——斐波那契數列。
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
對比蒙娜麗莎中的數字列,發現數值一樣,但是進行了位移。
之後對比,題目中給到的兩個數列的長度都是32,並且flag也是32位,可以推測,神祕數列是通過flag位移後得出的,而位移的規則是斐波那契數列的位移。
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
規則如下:
第零位1還是1,沒有位移。
第一位233是斐波那契數列的第十二位(以0開始算),因此下面神祕數字串的第一位的6是原本flag的第十二位。
第二位3是斐波那契數列的第三位,因此下面神祕數字串的第二位的9是原本flag的第三位。
以此類推…,寫出如下指令碼。
相關文章
- buu hacknote
- BUU BRUTE 1 wp
- BUU BURP COURSE 1
- BUU XSS COURSE 1
- BUU CODE REVIEW 1 1View
- BUU_jarvisoj_level0JAR
- buu 程式碼審計
- BUU刷題記錄
- buu反序列化
- buu [AFCTF2018]MorseTF2
- buu學習之旅(一)
- Basic Paxos
- Typescript basicTypeScript
- BUU_ciscn_2019_n_1
- BUU_RE學習記錄
- BUU-[HBNIS2018]excel破解Excel
- OpenAPI Basic StructureAPIStruct
- Visual Basic for ApplicationAPP
- python中rsa的RSAPython
- buu Reverse學習記錄(8) xor
- numpy_torch_basic
- Recommendation Systems Basic Notes
- Reinforcement Learning Basic Notes
- Machine Learning - Basic pointsMac
- IPFS_basic_use
- [Vue] Slots - 1. basicVue
- [Vue Form] Basic Select componentVueORM
- AWS-Basic-S3S3
- Basic Authorization 認證方法
- RSA加密加密
- 【Basic Abstract Algebra】Exercises of Section 1.1
- 【Basic Abstract Algebra】Exercises for Section 1.2
- 【Basic Abstract Algebra】Exercises for Section 1.3
- 【Basic Abstract Algebra】Exercises for Section 1.4
- Prometheus-operator新增basic authPrometheus
- HTTP認證模式:Basic & DigestHTTP模式
- Shiro實現Basic認證
- Basic Steps to Create Dynamic Modification Rule