目录
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博客
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}'