欢迎访问魔域私服发布网!
语言选择: ∷ 

魔域魔兽森林排名奖励(没想到)魔域魔兽森林跟站有关系吗

发布时间:2023-03-25浏览次数:214

1.魔域魔兽森林光圈什么时候出

本文使用 Zhihu On VSCode 创作并发布题目描述给长度为15的一个flag,转换成二进制后就是一个长度为120的01串keystream\mathrm{keystream}同时在开始的时候,会随机生成一个256位初始向量。

2.魔域魔兽森林在哪

iv\mathrm{iv}、256位素数pp和qq令n=pqn=pq在这之后你可以进行任意多次询问从k=0k=0开始计数,在第kk次询问中,你可以输入一个数mkm_k返回以下结果:resk:=iv+∑i

3.魔域魔兽森林排名奖励

=17keystream7k+i−1mod120(mkxorq)iiimodn\mathrm{res}_k := \mathrm{iv}+\sum_{i=1}^{7} \mathrm{keystream}_{7 k + i - 1 \ \mathrm{mod} \ 120} (m_k \ \mathrm{xor} \ q)^{i^{i{^{i}}}} \ \mathrm{mod} \ n

4.魔域魔兽森林跟站有关系吗

所涉及的知识点pwntools互动基本的费马小定理差分思想题目信息nn已知但是nn不可直接分解开始思考首先我们根据题目中提供的handout.py脚本玩一玩,就会发现,随便输入几次0之后,res\mathrm{res}。

5.魔域魔兽森林祭坛什么时候开启

的计算都会变得非常慢后面发现是那个ii的ii的ii次方次方计算太慢了……一个很直观的思想就是把ii的ii的ii次方次方这玩意儿缓存起来因为我们只要计算某个数的那些幂modn\mathrm{mod} \ n。

6.魔域怀旧版魔兽森林技巧

,一个非常直观的想法就是事先计算一个缓存mod_cache\mathrm{mod\_cache}:mod_cachei:=iiimod(p−1)(q−1)\mathrm{mod\_cache}_i := {i^{i{^{i}}}} \ \mathrm{mod} \ (p-1)(q-1)

7.魔域魔兽森林传送阵几点开

然后就舒服了观察res\mathrm{res}的表达式,我觉得对mkm_k做什么特别的赋值好像并没啥用,不如直接令所有mk=0m_k=0,于是我们res\mathrm{res}的表达式此时为:resk=

8.魔域森林连接

iv+∑i=17keystream7k+i−1mod120qmod_cacheimodn\mathrm{res}_k = \mathrm{iv}+\sum_{i=1}^{7} \mathrm{keystream}_{7 k + i - 1 \ \mathrm{mod} \ 120} q^{\mathrm{mod\_cache}_i} \ \mathrm{mod} \ n

9.魔域魔兽森林怎么开大帝宝箱

注意到一开始,由于我们并不知道nn的分解,所以也无从得知pp、qq的值,更无从计算出mod_cache\mathrm{mod\_cache}一个非常直接的动力就是求出qq,继而我们能求出mod_cach

10.魔域魔兽森林有什么奖励

ei\mathrm{mod\_cache}_i,从而我们就只需把精力放在keystream\mathrm{keystream}上一个很简单的思路是将resk\mathrm{res}_k的相邻项相减,就把。

iv\mathrm{iv}消去:resk−resk−1=∑i=17(keystream7k+i−1mod120−keystream7(k−1)+i−1mod120)qmod_cacheimodn\mathrm{res}_k - \mathrm{res}_{k-1}= \sum_{i=1}^{7} (\mathrm{keystream}_{7 k + i - 1 \ \mathrm{mod} \ 120} - \mathrm{keystream}_{7 (k-1) + i - 1 \ \mathrm{mod} \ 120}) q^{\mathrm{mod\_cache}_i} \ \mathrm{mod} \ n

可以惊喜地发现,上面那个式子肯定是qq的倍数!那么,很快就能反应过来用最大公约数攻击nn,也就是说,极有可能q=gcd(resk−resk−1,n)q=\mathrm{gcd}(\mathrm{res}_k - \mathrm{res}_{k-1}, n)

!实战也是这样做的,随便令k=1k=1就能求出qq,继而求出mod_cache\mathrm{mod\_cache}现在我们只需要求keystream\mathrm{keystream}了由于keyst

ream\mathrm{keystream}是01串,所以keystream7k+i−1mod120−keystream7(k−1)+i−1mod120∈{−1,0,1}\mathrm{keystream}_{7 k + i - 1 \ \mathrm{mod} \ 120} - \mathrm{keystream}_{7 (k-1) + i - 1 \ \mathrm{mod} \ 120} \in \{-1, 0, 1\}

keystream\mathrm{keystream}不完全一样时,resk−resk−1\mathrm{res}_k - \mathrm{res}_{k-1}的值也不尽相同我们可以大胆地猜测,一共7个。

keystream\mathrm{keystream}段的差,和res\mathrm{res}的差分,构成一一对应我们可以先打一个一一对应的表,然后通过很多个kk算出来的差分,来把这一系列res\mathrm{res}。

的差分反解回keystream\mathrm{keystream}段的差,然后通过keystream\mathrm{keystream}为01串的性质卡出keystream\mathrm{keystream}

本来的值:譬如,keystream7−keystream0=−1\mathrm{keystream}_7 - \mathrm{keystream}_0=-1那么可以推出keystream7=0\mathrm{keystream}_7=0

且keystream0=1\mathrm{keystream}_0=1这样代码写的比较抽象,大家笑一笑就好具体互动的时候,服务器第一步加了一个算sha256的步骤,直接爆破就完事儿frompwnimport

*importgmpy2importitertoolsfromCrypto.Util.numberimportbytes_to_long,long_to_bytesimportstringfromhashlib

importsha256classGao():def__init__(self):self.cur=0self.keylen=120# self.conn = process([python, handout.py])

self.conn=remote(52.163.228.53,8081)self.sum=[0]*120self.ans_delta=[-999]*120self.ans=[-1]*120defsha(

self):""" docstring """# last = mYziaPbrbkMMLyF9# ans = c19f133c32952f2cfdd8fbd35dca8f0a79253bb497b5c4854e408a903720cff2

a=self.conn.recvline()give=self.conn.recvline()last,dengyu,ans=a.split()last=last[-len(FYjqo7wWE21jxrxd)

):-1]ans=ans.strip()print(last)print(ans)forpossinitertools.product(string.ascii_letters+string.digits

,repeat=4):now_str=.join(poss)+lastifsha256(now_str).hexdigest()==ans:self.conn.sendline(.join(poss))

printsha OKbreak# print sha256(now_str).hexdigest()# print anselse:printggraiseNotImplementedErrordef

gao(self):""" docstring """self.sha()self.n=self.conn.recvline()self.n=int(self.n.split

()[1])tempq=[]pre_a=0try_n=170//7foriinrange(try_n):# 120self.conn.recvline()self.conn.sendline(0)a=self

.conn.recvline()a=int(a.split()[1])# print fuckyou# print a# print pre_a# self.sum[self.cur] = (a - pre_a) % self.n

self.sum[self.cur]=apre_a=aself.cur=(self.cur+7)%120# print self.nself.q=gmpy2.gcd(self.n,self.sum[7]

-self.sum[0])# print self.sum[7]printself.nprintself.qself.p=self.n//self.q# print self.p * self.q - self.n

self.mod_cache=[0]foriinrange(1,8):self.mod_cache.append(i**i**i%((self.p-1)*(self.q-1)))self.powmod_cache

=[]forjinrange(7):self.powmod_cache.append(gmpy2.powmod(self.q,self.mod_cache[j+1],self.n))# print q =, self.q

# print p =, self.pforiinrange(try_n-2):begin_pos=(i*7)%120end_pos=(i+1)*7%120nowsum=(self.sum[end_pos

]-self.sum[begin_pos])%self.n# print i=, i, Nowsum =, nowsum# print begin=, self.sum[begin_pos]# print end=, self.sum[end_pos]

forpossible_combinitertools.product([-1,0,1],repeat=7):# print(possible_comb)cur_ans=0forjinrange(7):

cur_ans=(cur_ans+possible_comb[j]*self.powmod_cache[j])%self.nif(cur_ans==nowsum):forjinrange(7):cur_pos

=(end_pos+j)%120self.ans_delta[cur_pos]=possible_comb[j]breakelse:raiseNotImplementedErrorforstart_pos

inrange(7):forstart_valueinrange(2):cur_pos=start_poscur_value=start_valueforiinrange(try_n-2):cur_pos

=(cur_pos+7)%120cur_value=cur_value+self.ans_delta[cur_pos]ifnot(0<=cur_value<=1):break# No OKelse:cur_pos

=start_poscur_value=start_valueself.ans[cur_pos]=cur_valueforiinrange(try_n-2):cur_pos=(cur_pos+7)%120

cur_value=cur_value+self.ans_delta[cur_pos]self.ans[cur_pos]=cur_valueassertsum([_for_inself.ansif_==

-1])==0self.ans_value=int(.join([str(_)for_inself.ans]),2)print(long_to_bytes(self.ans_value))# print (tempq[0] + tempq[240]) % self.n == 2 * tempq[120] % self.n

if__name__=="__main__":g=Gao()g.gao()运行log:kiYnY3hT8TiT12YN 337744b3824890752bd2ae35dd4c06e6b3972ded078e8b44fc473a938fa55b46 sha OK 28276461200179119282462702342037375340869051705659961557299124253251675979628148131489496353898825973446648242725254347217473032486020702759560793818036732439448161654622098285282363133476159156479314953701616916461941360247578589853762049570287512133394147204937365541100009120670404160374318747884998932460775872014328053151677588351711075954926953019713175947740668218806749261814449066719071436470539695460718009694489065053404116489945045325366856211001153531267065634117020821560092244645502213628586304241708474841894301513365363303030217952520557222141115758673880218897885606542860992666971575636336616134283 178483788848561510623550464665822010402910062766637221211707171631627637225777017045138155936815938660793969869889077925898542101136908007648850143705614159554327830295832028915958765047356795067816303073994163274625556037911029281704030062972722182659482467121786689851628631512807694410720976103889625705423 *CTF{yOuG0t1T!}

微信扫码微信扫码 关注我们

  • 24小时咨询热线400-888-8888

  • 移动电话13588888888

Copyright © 2022 魔域发布网 All Rights Reserved. 地址:魔域私服玄武区玄武湖 苏ICP123456 XML地图 网站模板