UNCTF2021 少量wp(非web部分)
懒得找同余符号,统一打的=。
easy_rsa:
没啥好说的。
简单回顾下RSA:
生成两个大素数p、q生成p*q=n,phi=(p-1)*(q-1);取素数加密模数e,计算d=e-1 mod phi
公开e,n;存储d。
对于明文m,使用加密c = me (mod n);对于密文c,使用解密m = cd (mod n).
探秘中世纪城堡:
根据提示,可以得出本题采用了base64、凯撒、栅栏 三种加密。
对于前两层,试凯撒密码偏移量:
得到人话后,栅栏凑一下:
分析badusb流量:
题目提示考键盘映射,但感觉大部分还是靠猜。已知UNCTF{}.
前两位,20代表按住了shift、00代表不按。
后两位,26个字母是按字母顺序相连的,数字是按键盘顺序相连的(0最后),
再加上常见的花括号、斜杠之类的猜一猜就行了。
baby_rsa:
相比正常的rsa,其他部分相同,只是最后的加密变成了 c= (mp+n)e (mod n)
可知加密出的c一定是p的倍数;由gcd(c,n)求得p,进而求得q。
用正常的RSA方法进行解密;解出的东西是 (mp+n) mod n
除个p就行了。
ezlogin:
运行它的程序 注册个用户名密码都是1的账号,再用它登录 直接出flag了
麻了 ida od都没打开
没有继续研究了。
py_trade:
python操作码
复原的时候,用dis跟着,一步步慢慢来。
有个表达式还是比较长的,最好手动画栈看看。
得到加密函数:
它只有后一半加密有用,解密时只需要取后一半的逆过程就行了。
注意异或运算优先级。