avatar💛
北歌北沐城歌

北沐城歌|北歌的技术分享

山行野宿,孤身万里

crypto-

摘要:Zer0pts2020ROR 这道题重点是看ror 我们知道了每次以bit为单元移动且题目告诉了我们所有位的pow结果 也就是题目想要我们逆向计算binm的每一位来反推m 注意到n为偶数。而奇数mod偶数末位为1 偶数mod偶数末位为0。

[Zer0pts2020]ROR

py
import random
from secret import flag

ror = lambda x, l, b: (x >> l) | ((x & ((1<<l)-1)) << (b-l))

N = 1
for base in [2, 3, 7]:
    N *= pow(base, random.randint(123, 456))
e = random.randint(271828, 314159)

m = int.from_bytes(flag, byteorder='big')
assert m.bit_length() < N.bit_length()

for i in range(m.bit_length()):
    print(pow(ror(m, i, m.bit_length()), e, N))

这道题重点是看ror

我们知道了每次以bit为单元移动且题目告诉了我们所有位的pow结果

也就是题目想要我们逆向计算bin(m)的每一位来反推m 注意到n为偶数!!! 而奇数mod偶数末位为1 偶数mod偶数末位为0!

所以根据每次pow的结果我们可以确定一个比特位!!!

最后取个反序 long_to_bytes即可得到flag

py
from Crypto.Util.number import *
from Crypto.PublicKey.RSA import * 
import primefac

with open(r'.\chall.txt','r+') as f:
    cipher = f.readlines()

m = ""
for s in cipher:
    s = int(s,10)
    if s%2 == 1 :
        m += "1"
    else:
        m += "0"

m = int(m[::-1],2)
print(long_to_bytes(m))

ctfshow-xxe
crypto-suanfa
Valaxy v0.28.9 驱动|主题-Yunv0.28.9
本站总访问量
本站访客数 人次