BUUCTF-Crypto【21-40T】loading……

21.[GKCTF2020]小学生的密码学

e(x)=11x+6(mod26)

密文:welcylk

(flag为base64形式)

  1.  这种形式的加密手法是仿射变换其加解密分别如上
  2. 所以可以得到a=11,b=6,需要做的工作是根据密文c,密钥a/b求得明文m。这里a−1计算可以利用Python的gmpy2库中invert函数完成
  3. 注意仿射变换26个字母按数字0~25记,因此在需要将密文ASCII对应的数值减去97,解密完恢复成字母即加上97
  4. 此外,题目要求最后的flag为base64形式,因此还需借助Python的base64库中b64encode函数。需要注意的是在Python3中,字符都为unicode编码,而b64encode函数的参数为byte类型,所以必须先转码。
  5. 解题代码如下
from gmpy2 import invert
from base64 import b64encode

c = "welcylk"
a = 11
b = 6
n = 26

in_a = invert(a, n)
print(in_a)
# in_a = 19

m = []
for i in c:
    modified_c = ord(i)-97
    m.append((modified_c-b)*in_a % 26)
flag = ""
for mi in m:
    flag += chr(mi+97)
print(b64encode(flag.encode()))

flag{c29yY2VyeQ==}

参考:https://www.cnblogs.com/vict0r/p/13791142.html

22.传统知识+古典密码

小明某一天收到一封密信,信中写了几个不同的年份
          辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳。
          信的背面还写有“+甲子”,请解出这段密文。

key值:CTF{XXX}

 

由表可知

题干中说信的背面还写有“+甲子”,于是我们可以把每个数加上60

得到88、90、83、68、77、70、76、90

对应ASCII表,得到XZSDMFLZ,由题目中“古典密码”,联想到栅栏密码和凯撒密码

先用栅栏

再用凯撒

历经n次摸索得出来的一个可疑的一串字母……

(感觉做这种题经验很重要,运气也是啊)

23.信息化时代的步伐

题目:606046152623600817831216121621196386

由提示“也许中国可以早早进入信息化时代,但是被清政府拒绝了。附件中是数十年后一位伟人说的话的密文。请翻译出明文(答案为一串中文!) ”,加上网络了解,这串数字是中文电码。(又一新类型密码get)

利用中文电码工具得到flag为:
flag{计算机要从娃娃抓起}

24.RSA1

题目:

p=8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229 
q=12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469 
dp=6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929 
dq=783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041 
c=24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852

这一题比前面的RSA类型的要难了,不能一下子用工具得出结果

上网查了一下题解如下

import gmpy2
import libnum
def decrypt(dp,dq,p,q,c):
    InvQ = gmpy2.invert(q, p)
    mp = pow(c, dp, p)
    mq = pow(c, dq, q)
    m = (((mp-mq)*InvQ) % p)*q+mq
    print (libnum.n2s(m))

p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229 
q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469 
dp = 6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929 
dq = 783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041 
c = 24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852
decrypt(dp,dq,p,q,c)

得到

由p,q,dp,dq,c求明文的算法

代码如下:

import gmpy2
I = gmpy2.invert(q,p)
mp = pow(c,dp,p)
mq = pow(c,dq,q)               #求幂取模运算

m = (((mp-mq)*I)%p)*q+mq       #求明文公式

print(hex(m))          #转为十六进制

一切以解题为目的的抄代码都是没有灵魂的,我们还是要从数学理论上去分析解决它,再去写代码”→来源:https://blog.csdn.net/MikeCoke/article/details/105959599

所以不能一味靠“借鉴”去做题了。还得花点时间去深入研究,不过估计得到寒假了

25.凯撒?替换?呵呵!

MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}

这个样子看起来是凯撒加密,按理说前面四个字母就是加密后的‘FLAG’,但后来发现不对劲……

是高级的凯撒加密,不是单纯的按字母顺序来位移,所以就要经过暴力破解出每一种可能的对应加密。

幸好有工具https://quipqiup.com/

26.old-fashion

Os drnuzearyuwn, y jtkjzoztzoes douwlr oj y ilzwex eq lsdexosa kn pwodw tsozj eq ufyoszlbz yrl rlufydlx pozw douwlrzlbz, ydderxosa ze y rlatfyr jnjzli; mjy gfbmw vla xy wbfnsy symmyew (mjy vrwm qrvvrf), hlbew rd symmyew, mebhsymw rd symmyew, vbomgeyw rd mjy lxrzy, lfk wr dremj. Mjy eyqybzye kyqbhjyew mjy myom xa hyedrevbfn lf bfzyewy wgxwmbmgmbrf. Wr mjy dsln bw f1_2jyf-k3_jg1-vb-vl_l

还是用上面那个爆破工具

27.权限获得第一步

Administrator:500:806EDC27AA52E314AAD3B435B51404EE:F4AD50F57683D4260DFD48AA351A17A8:::

有点似曾相识,跟十八题有点相似(“Windows系统密码”),直接md5解码

28.萌萌哒的八戒

看到图片上那行奇怪的字符,这应该就是“猪圈密码”了吧!

还有工具:http://ctf.ssleye.com/pigpen.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值