0xGame2021-第三周
0xGame第三周wp
♂起来了
Crypto 签到
挺简单的数学题目
pow(5m,e,n)=pow(5,e,n) * pow(m,e,n)=(pow(5,e,n) * c)%n
然后就好了呀
e=10007
c=1285901843278876234855607310979623200548989981628646673003523113580651626686523566799395153922258813222744927018205882436414589516795415393990321785993777190284046937462277341231780571523062023964463963139910673601962881978696384360480028132774373962893042697866284303407898274683337284548529324550392212212259945699167254341062208031468355814520907121576009140399280898693924706067921614961798886587174234822238887374399666546113213239071736098162263227821798099750616137755055435397986788792824117529508255014392344357337010003489080209442530630893119917536518243474797351694663533728052713570044084663268350004738561234330890283895430742958255842196396542672482459665354739161276178850775803757753274712331067038077233072381051447436014423088822190073982228377699578821863871042501139434131053044240618505423456248872825597521393564957261041606004454706987978944644129728005540587982321571481413548381251589071459468890948819121023006292105804319208332473499823959882524985324120811768843639294924500467781666073366713198751960913508720530656411097981933156605831180926219778514434
n=2422711508900009723470102727278184898228579351729629175495904760516536114771819178772843940622693480942295987032442940867670858858530606887743557817380121361626756206355705110299827107648704348792184242506797212331641569408152865458082131811787893384573565771304686373397987779236692592582009393836324438173880350455958049987506807351970912049246353746635267159741115761548052126938491673479606393396100458729618059852813438444299361468512008386975558106274324688665963516424534366163011821633197140729560513838981241752422348968312410911097523311183305812013220724215584901550592570168096761576532621840320623463208702401829189862290303098674021012353400081288819532365151476738751064469957971192132666136590103567843662591585345483671185892760751481722342403025068374371716176981888876927119331602694699049322860285991375002326127401769287658952682585275891296760732815680898653162425658904911584903825163141576325803464119867837508173795728753701563149748508464162635777787788266240105654089919642728171076155284842273517797069725130328742992830894075552022372717019366081516680737
c2=pow(5,e,n)*c
c2=c2%n
print(c2)
Crypto wilson
这题原本应该把noise搞出来才行
但是我把n分出来求出m之后把m分解了(因为感觉noise*flag不会比n大所以这个mod没啥用)
得到了这么个结果
其中
(问就是运气)
Crypto predict 1
先学习一下LCG
找到了根据x1,x2,x3,x4,x5解出a,b,m的方法
from Crypto.Util.number import*
import math
x1=33026305303475472470447973
x2=167563064649081821153911134
x3=219967887320275023725686310
x4=235804070571767086990925355
x5=735859862578334766481662221
t4=x5-x4
t3=x4-x3
t2=x3-x2
t1=x2-x1
m=math.gcd((t4*t2 - t3*t3) , (t3*t1 - t2*t2))
a=((x4-x3)*inverse((x3-x2),m))%m
b=(x3 - a*x2)%m
x6 = (a*x5 + b)%m
print(x6)
后来尝试了几次发现不太行
根据hx大佬提示这样的m不一定是m,要多取几个x才准确一点
然后下面是脚本:
from pwn import*
from Crypto.Util.number import*
import math
x=[]
t=[0,0,0,0,0,0,0,0,0,0]
io = remote("47.101.38.213", 60709)
for i in range(10):
io.recvuntil(b"2.Quit\n",drop=False)
io.sendline(b"1")
io.recvuntil(b"format>",drop=False)
io.sendline(b"1")
io.recvuntil(b"is ",drop=False)
tmp=io.recvline(keepends=False)
x.append(int(tmp))
for i in range(9):
t[i]=x[i+1]-x[i]
m1=math.gcd((t[3]*t[1] - t[2]*t[2]) , (t[2]*t[0] - t[1]*t[1]))
m2=math.gcd((t[7]*t[5] - t[6]*t[6]) , (t[6]*t[4] - t[5]*t[5]))
m=math.gcd(m1,m2)
a=((x[3]-x[2])*inverse((x[2]-x[1]),m))%m
b=(x[2] - a*x[1])%m
s=x[-1]
for i in range(190):
s=(a*s + b)%m
io.sendline(b"1")
io.recvuntil(b"format>",drop=False)
io.sendline(str(s).encode())
io.recvuntil(b"2.Quit\n",drop=False)
s=(a*s + b)