2022-01-04
TetCTF——Crypto
Shares
Description: Yet another secret sharing scheme.
 Service: nc 139.162.61.222 13371
 Binary: https://drive.google.com/file/d/1sP0zKSKoF6TJZ-gtaUf7rv4dQ-bGr-cp/view?usp=sharing
用nc并沒能拿到題目代碼,不知道問題出哪了🐷一直顯示鏈接超時
 所以比完賽才拿到題目
考點依舊在格
對整個程序的描述是:
 這是一個新的(實驗性的)秘密/密碼共享方案的(不完整的)實現。
 這個想法很簡單。基本上,一個秘密或密碼被轉換成一組有限域元素,每個共享只是這些元素的線性組合。另一方面,當收集到足夠多的共享時,確定有限字段元素,允許恢復原始的秘密或密碼
對get_shares的描述是:
 得到密碼的shares.
 參數:
 password:共享用戶的密碼。
 N:返回的shares數量。
 T:找回密碼所需的最小shares數量。
 返回:shares。
讀程序
 從這里開始,char表示允許的373737個字符中的一個,而int表示000到363636之間的整數。
 正如我們在源代碼中看到的,一個1616個字符的密碼c1c2…c16c_1c_2\ldots c_{16}c1?c2?…c16?
 ?
 一開始就確定了,我們的目標是猜測它。還可以獲得20212021股get_shares(pwd),其中:
 向密碼追加161616個隨機字符
 P=c1c2…c16r1r2…r16P= c_1c_2\ldots c_{16}r_1r_2\ldots r_{16}P=c1?c2?…c16?r1?r2?…r16?
 生成(Z/37Z)32v(\mathbb{Z} / 37\mathbb{Z})^{32}v(Z/37Z)32v中161616個32位的隨機向量v1,v2,ldots,v16v_1, v_2, ldots, v_{16}v1?,v2?,ldots,v16?
…
 …
 …
參考代碼
from pwn import * from tqdm import tqdm# local runs in 30 seconds, remote takes 20 minutes r = remote('139.162.61.222', 13371) # r = process('pypy3 shares.py', shell=True)P = 37 CHARS = "abcdefghijklmnopqrstuvwxyz0123456789_1" def INT_TO_CHAR(i): return CHARS[i] def CHAR_TO_INT(c): return CHARS.index(c)lhs, rhs = [], [] tq = tqdm(range(2000)) cnt = 0 for _ in tq:r.sendline(b'a')rv = eval(r.recvline())# Notice I keep the c1, c2, ..., c16 coefficients as vectorsrv = [[CHAR_TO_INT(c) for c in r] for r in rv]cs = Matrix(GF(P), [r[16:32] for r in rv])# Singular?if cs.rank() < 16:rs = Matrix(GF(P), [r[:16] + [r[-1]] for r in rv])res = cs.augment(rs).rref()[-1]# first 16 columns are the v_{i, j}lhs.append(res[16:32])rhs.append(res[32])if len(lhs) == 16:breakcnt += 1tq.set_description(f"{len(lhs)} / {cnt}")# solve for password ref = Matrix(GF(P), lhs).solve_right(vector(GF(P), rhs)) pwd = ''.join((INT_TO_CHAR(r) for r in ref)) r.sendline(pwd.encode()) print("Flag:", r.recvline().decode())看人家的代碼看好幾天,雖然沒都懂,而且時間過了差不多也不能訪問了,但是還是有點收獲的,比如: 我太菜了😥
總結
以上是生活随笔為你收集整理的2022-01-04的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 2022-01-01
 - 下一篇: base64加密原理及python、C语