校赛的题目都好难啊!!
OhMySubstitution
上来给了三个文件,依次打开后虽然看不懂是怎么转换的,但是发现已经给了task.py和task.py.sub,并且也给了转换之后的flag。
并且比对转换之后的头部恰好对应着“flag”,发现了这个之后,就进行了漫长的对比过程。。。最后一个个对比LEXx{AabPEFwmhSLZICtK4V7PEF53XdEF1xv}在task.py和task.py.sub中的相对位置,最后得到flag为:flag{SImpleFLAGf0rth3siMpleCHa1lengE}。
OhMyBabyRSA
1 | from Crypto.Util.number import * |
由题目可知,n由四个素数构成,本来以为可以暴力破解,但是不知道为什么在yafu上分解不了,其他在线网站也无济于事。所以只好找其他办法,从题目发现,p,q非常接近,r,s非常接近p^2和(p+1)^2,所以想到了直接将n开6次方。得到了一个与p很接近的实数。
1 | from sympy import nextprime |
在sagemath中跑完发现得到的值并不相等,因为n^(1/6)>p,所以得到是一个比p大的一个素数,但是又非常接近,所以就减小near_p1,发现当near_p1-3时,p,q,r,s的值发生改变,并且经过验证之后发现n==p* q * r * s
最后将得到的值拿到python中解决就能拿到flag了
1 | import gmpy2 |
flag为:FCTF{it_easy_pqrst_RSA_also_baby_with_Monotonically_increasing!}