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跟着,一步步慢慢来。

  有个表达式还是比较长的,最好手动画栈看看。

  

   得到加密函数:

  

 

  它只有后一半加密有用,解密时只需要取后一半的逆过程就行了。

  

 

   注意异或运算优先级。

posted @ 2021-12-05 21:59  hiddener  阅读(174)  评论(0编辑  收藏  举报