0xGame2021-第二周

第二周wp

开始

 

Crypto calender

挺有意思的

把对应星期的对应个数处的日期转换成26字母

唯一的疑惑是上个月的要不要算呢

两种情况都看了下明显还是要算

Crypto 甘道夫指导

属于是直接把flag拍脸上了

先是自己写了代码结果没解出来(不过思路没毛病)

于是在hx大佬的博客copy了代码

然后还有什么好说的吗?!qwq

Crypto CN NO.1

第一步和甘道夫一样

得到一堆数据之后去看中国剩余定理

我觉得我看懂了但我写不出代码

还好有百度,找到一个靠谱的代码解出m

然后我傻逼兮兮地用了long_to_bytes

然后傻逼兮兮地解除了一串傻逼兮兮的b''

然后傻逼兮兮地去问大佬

然后傻逼兮兮地回去看源码

于是傻逼兮兮地发现是不需要long_to_bytes的

然后我个傻逼把m直接输进去就拿到了flag,太感动了

Crypto equation

刚看到属是有点懵逼还试图把他当成二元方程穷举

然而转念一想可以直接转成一元二次,于是开始求解

求根公式大家都会就不多说了,值得一提的是大数开方的过程:

原本想着可以直接在网上找到工具结果徒劳

于是自己写了一个简单的二分法来求解

后面就简单了

下面给出全部代码

from Crypto.Util.number import*
n=29070881194239792091996951889978925941382014143912652099051180726356864627874253433871074540945557832901059397368986887752132387368293534115856317439856278674020249172544170254969581722964815439189193923153143538569697570722682892883715833119831018800307809755476716119498877940372976643887984896270202769953400174650465154562081929385655236671763799202750100671617111134188737867419824202590812810715012905761248366011771140922460758495687990609335246283798319666587556607810715362920356588897534839536328090760646479183981630385352655797077512586248984274942586809055192853137165652980021836350393400722226972173214682414870486118671313615831125468483731370315228221018490375802540137480718023855301133197678369272040639904587501304052499598902095025277338889880188761288755978291922584877284012214040722369535913073849160803191480535554423199283
f=60621372939002882805013403171742702513497103761906173416105267237808058939660623103507107562578292899982406983598531353376182455286670013546227100349077357549728600007647043450275221399764392050101386673092305317243403374044297387013140877452422023988932582637981175099157142550745966095398262645483617394134803358425760304363836495271715083917117462760309379794701105128326283283562670689062898798107181607842722558824651323397
derta=f*f-4*7593*3418*n
low=10**427
high=10**428
while low<high:
middle = (low+high)//2
if middle**2>derta:
high=middle+1
elif middle**2<derta:
low=middle-1
else:
break
print(middle)
q = (f+middle)//(2*7593)
p = n//q
phi=(p-1)*(q-1)
n=p*q
e = 612727
d=inverse(e,phi)
c = 13405898768607126342735152861874194093539776532451433244384161645650269836508906062201506167334232159011891868740650271406237835996628161218737321562453229992581458546595805497890663988648594306162521553204122457714811664274319217780860322512390603037125445210952354328893192808468523528488382843982895741605187846452526607515616950600824405860650300247256006735662126234041492036321309565256770891501248656569219300876982142045338146654538924362916886251375573293825178736718977246173273428119533445771099855795133258743468863921088250518360972413181377979918076452600630250727219803342530280185236070989401584291772241548089037962427020303042524172299264525570830428369115476600559801243917150717055023377557783910959820960663896534192637742955820545654947099142239750945804645899223756651548344312092194839404536587932048211949633546864675949493
m=pow(c,d,n)
print(long_to_bytes(m))

结束

misc ezalpha

开始的时候十分蛋疼的去用steg的那个最低位啥的

几天后幡然醒悟

点了几下下面的箭头

得到flag

misc encode

找到新曰佛解出来一堆即见未来为何不拜头疼几天

给了hint ook

了解之后把所有即见未来为何不拜替换成Ook

解出来

最后VBScript解码就出来了

misc hamburger

这也是让我十分蛋疼的一道题

一开始找了半天和png夹层啥乱七八糟的东西

最后发现用记事本打开就能找到flag?!

感觉这不是像是正解但我还是解出来了

 

posted @ 2021-11-18 09:08  上辰  阅读(149)  评论(0编辑  收藏  举报