Crypto(BUU 题解)

目录

FTCF

你听过md5吗

BUU

信息化时代的步伐

凯撒?替换?呵呵!

萌萌哒的八戒

​编辑

传统知识+古典密码

权限获得第一步

RSA1


FTCF

你听过md5吗

题目:

from uuid import *
from hashlib import md5

flag = 'FCTF{' + str(uuid4()) + '}'

assert md5(flag.encode()).hexdigest() == '55977fb1cabc7bf50eaac268eab812b3'
assert flag[:-7] == 'FCTF{e388fc29-339a-45f3-84ac-7f84c7' 
#assert断言函数,只有满足条件才会继续执行下去

观察题目,已经给了我们一大部分的flag,只剩下7个没给出来,可以直接枚举出来

需要知道的一点md5编码由数字“0-9”和字母“a-f”组成

要注意一点:我们是知道最后的是“}”,那么只需要循环6次即可,多了可能跑不出来

解密代码:

from uuid import *
from hashlib import md5

#需要知道的一点md5编码一般由数字“0-9”和字母“a-f”组成
temp="0123456789abcdef"

for i1 in temp:
    for i2 in temp:
        for i3 in temp:
            for i4 in temp:
                for i5 in temp:
                    for i6 in temp:
                            flag="FCTF{e388fc29-339a-45f3-84ac-7f84c7"+i1+i2+i3+i4+i5+i6+"}"
                            if md5(flag.encode()).hexdigest() == '55977fb1cabc7bf50eaac268eab812b3':
                                print(flag)
                                break

得到答案:FCTF{e388fc29-339a-45f3-84ac-7f84c790b4cb}

BUU

信息化时代的步伐

题目:也许中国可以早早进入信息化时代,但是被清政府拒绝了。附件中是数十年后一位伟人说的话的密文。请翻译出明文(答案为一串中文!) 注意:得到的 flag 请包上 flag{} 提交

密文:606046152623600817831216121621196386

一串的数字,一开始想到acsll码,但是错误。好吧触及知识盲区,搜索引擎启动。

才知道有

中文电码:一种以数字表示汉字的编码方式,也被称为“电报码”、“摩尔斯码”等。

四位阿拉伯数字表示一个汉字。

查询链接:中文电码查询 Chinese Commercial Code - 标准电报码免费在线查询|姓名电码|美国签证电码

解出答案:flag{计算机要从娃娃抓起}

凯撒?替换?呵呵!

题目:MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}

根据题目首先进行凯撒解密:FMAC{VNUVZQZNZQPKXQBIHRTHXRYBZQPKQVAMDAYVHAVYWNVZMQSHABQHXHPFXASH}

可以得到这种,但是不是FLAG,那这就不是常规的凯撒加密了,针对常规的还做了其他处理,根据题目,应该是还换了其他的字母,可以使用网站进行爆破出来,或者有能力可以自己写脚本(狗头)

链接:quipqiup - cryptoquip and cryptogram solver

得到答案:flag{substitutioncipherdecryptionisalwayseasyjustlikeapieceofcake}

(记得去掉空格)

这种题目好像只能记忆了,见得多了就会了(呜呜呜)

萌萌哒的八戒

题目:萌萌哒的八戒原来曾经是猪村的村长,从远古时期,猪村就有一种神秘的代码。请从附件中找出代码,看看萌萌哒的猪八戒到底想说啥 注意:得到的 flag 请包上 flag{} 提交

很明显这是猪圈密码,根据猪圈密码解密即可

解密链接:The Black Chamber - Pigpen Cipher

可以看看这篇博客,对于一些密码写的挺详细的:CTF必备密码编码大全_敲击码-CSDN博客

得到答案·:flag{whenthepigtoeat}

传统知识+古典密码

题目:

  • 小明某一天收到一封密信,信中写了几个不同的年份

          辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳。
          信的背面还写有“+甲子”,请解出这段密文。

        key值:CTF{XXX}

由题目可以知道是天干地支

根据上表可以得到(28,30,23,8,17,10,16,30)

然后+甲子,一开始是想着+1的,得到[29, 31, 24, 9, 18, 11, 53, 31]然后用acsll码转化,转化为一堆奇怪的东西,于是+60(60一个循环),并用acsll码转化得到XZSDMFLZ

再根据题目传统知识+古典密码,上面是传统知识,现在就是古典密码了,试一下栅栏和凯撒

凯撒没解出来

试一下栅栏解出两个:xmzfsldz和xsmlzdfz(这里用小写字母,更好去找答案,最后再还原即可)

再次栅栏试一下,不太行,那再次试一下凯撒,得到答案:SHUANGYU

然后提交即可flag{SHUANGYU}

其实查了题解,好难想到啊

  • 5555555595555A65556AA696AA6666666955

        这是某压力传感器无线数据包解调后但未解码的报文(hex)

        已知其ID为0xFED31F,请继续将报文完整解码,提交hex。

        提示1:曼联

然后文件里还有一个解密,提示曼联,这什么东西,搜索一下,是一个足球队,懵了。

查了题解,原来表示的是曼彻斯特码

感觉好复杂啊,简单说一下:编码的步骤,是用01表示0,用10表示1。题目里给了id的话,可以看flag解出来是否含有id?吗,相当于校验是否正确的一个功能。

那么把5555555595555A65556AA696AA6666666955转为二进制再按照上面转化,然后将得到的二进制转换为十六进制,对比ID并不重合,根据八位倒序传输协议将二进制每八位reverse,然后转换十六进制就可以得到flag。

解密链接:曼彻斯特编码解码器-曼彻斯特编码解码器下载 v1.3--pc6下载站

或者写脚本(说实话还不是太懂,放置一下)

但是这个结果和flag没有什么关系。

参考博客:

buuctf学习记录-crypto(001-010)_buuctf 传感器_九枕的博客-CSDN博客

crypto之曼彻斯特编码-CSDN博客

BUUCTF 每日打卡 2021-4-1_小明某一天收到一封密信,信中写了几个不同的年份,请解出这段密文。答案格式为nsfo-CSDN博客

权限获得第一步

题目:Administrator:500:806EDC27AA52E314AAD3B435B51404EE:F4AD50F57683D4260DFD48AA351A17A8:::

根据题目可知用md5解密即可(还是不太理解,虽然知道是md5)

解出答案:flag{3617656}

RSA1

题目:

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

题目给出了dp,dq,那么很明显是dp,dq泄露了,直接解密即可

解密代码:

from Crypto.Util.number import *
import gmpy2
import libnum

p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229
q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469
dp = 6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929
dq = 783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041
c = 24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852
m1=pow(c,dp,p)
m2=pow(c,dq,q)
p_q=inverse(p,q)
m=(m1+(p_q*(m2-m1)%q*p))%(p*q)
print(long_to_bytes(m))

得到答案:b'noxCTF{W31c0m3_70_Ch1n470wn}'

  • 20
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值