一些Crypto的基础题

前言

并非完全的原创,有些是参考了网上的wp,在这里做个整理,如果侵权可以私信联系。

一:一眼就解密 base64 SElTX1NUUklOR30=

ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30=

有等于号是bace64的特征

CTF在线工具-在线base编码|在线base解码|base16编码|base32编码|base64编码 (hiencode.com)

二:看我回旋踢 synt{:凯撒密码

密码:synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}

此为凯撒密码,网址为:

凯撒密码在线计算-ME2在线工具 (metools.info)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q6oVy6eE-1649124329226)(https://raw.githubusercontent.com/lllwky/botany/main/img/image-20220330170403604.png)]

为什么加密位移为13:一个个试出来,如果显示为flag,则加密位移为13

三:password

这个题目简直有毒,但是看题解分析密码有十个,张三19900315正好十个数字

在这里插入图片描述

flag{zs19900315}

四:变异凯撒 ASCII

在这里插入图片描述

在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。

前三个字母afZ_对应flag,而凯撒密码也意味着字母的对应是符合顺序规律的

我们查看ASCII表

在这里插入图片描述

a:97 f:102 Z:90 _:95

f:102 l:108 a:97 g:103

分别相差:5 6 7 8

afZ_r9VYfScOeO_UL^RWUc

写出脚本

ciphertext = 'afZ_r9VYfScOeO_UL^RWUc'
j = 5
for i in ciphertext:
    print(chr(ord(i) + j), end='')
    j += 1

最后求出flag:flag{Caesar_variation}

五:Quoted-printable =E9=82=A3

打开看到是这个样子
在这里插入图片描述

网络管理员在线工具 - Quoted-Printable (mxcz.net)

在这里插入图片描述

六 Rabbit加密 U2FsdGVkX1/

Rabbit加密-Rabbit解密-在线Rabbit加密解密工具 (jsons.cn)

在这里插入图片描述

七:篱笆墙的影子:栅栏加密

felhaagv{ewtehtehfilnakgw}

栅栏密码在线加密解密 - 千千秀字 (qqxiuzi.cn)

每组数字为2加密后:

flag{wethinkwehavetheflag}

暴力破解

栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文,这里以2栏栅栏加密为例。

felhaagv{ewtehtehfilnakgw}

flag,f与l之间有一个字母,所以栅栏数目为2,我们直接分离后变成

flag{wethinkw

ehavetheflag}

八:RSA

此题主要了解RSA如何使用

image-20220331131114339

打开RSAtools,输入的e要转换为16进制,输入R和Q并按CAL.D即可得到D

在这里插入图片描述

flag{125631357777427553}

九:丢失的MD5 unicode

打开来发现是python代码

在这里插入图片描述

我们把语法修正一下

import hashlib   
for i in range(32,127):
    for j in range(32,127):
        for k in range(32,127):
            m=hashlib.md5()
            m.update('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM')
            des=m.hexdigest()
            if 'e9032' in des and 'da' in des and '911513' in des:
                print(des)

运行后发现报错

在这里插入图片描述

就是在使用hashing之前需要对unicode进行编码

将字符转化为utf-8即可

import hashlib   
for i in range(32,127):
    for j in range(32,127):
        for k in range(32,127):
            m=hashlib.md5()
            m.update('TASC'.encode('utf-8')+chr(i).encode('utf-8')+'O3RJMV'.encode('utf-8')+chr(j).encode('utf-8')+'WDJKX'.encode('utf-8')+chr(k).encode('utf-8')+'ZM'.encode('utf-8'))
            des=m.hexdigest()
            if 'e9032' in des and 'da' in des and '911513' in des:
                print(des)

十:Alice与Bob素数分解 使用yafu工具,md5

题目描述

在这里插入图片描述

使用指令

image-20220331205659353

下一步:md5的32位小写hash,意思是进行md5加密且选择32位的那一个

网站

md5在线解密破解,md5解密加密 (cmd5.com)

101999 966233

在这里插入图片描述

直接输入即可,不需要选择类型

十一:rsarsa

题目描述:

在这里插入图片描述

一般情况下都是选择十进制,rsa工具要求出D

image-20220331212915313

得到D,一定要黏贴完成

56632047571190660567520341028861194862411428416862507034762587229995138605649836960220619903456392752115943299335385163216233744624623848874235303309636393446736347238627793022725260986466957974753004129210680401432377444984195145009801967391196615524488853620232925992387563270746297909112117451398527453977

给出了C,说明需要用到python的快速求幂取模运算

p=9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q=11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
n=p*q
C=83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
d=566320475711906605675203410288611948624114284168625070347625872299951386056498369602206199034563927521159432993353851632162337446246238488742353033096363934467363472386277930227252609864669579747530041292106804014323774449841951450098019673911966155
M=pow(C,d,n)
print(M)

最后得到

5577446633554466577768879988

十二:凯撒大帝

看题目意思是用凯撒解密将FRPHEVGL解密后会得到一个我们熟悉的单词,然后同解密的方式加密ComeChina可以得到flag

然后脑袋想想估计不会是很复杂的偏移,直接拖到网站好了

在这里插入图片描述

一个个解密在偏移量到13的时候出现单词SECURITY,觉得就是他了,然后把comeChina进行加密得到flag
在这里插入图片描述

十三:windows系统密码 md5加密 :::

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

密码是:与:::之间,windows密码一般是md5加密

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fmQYgJa6-1649124329248)(https://raw.githubusercontent.com/lllwky/botany/main/img/image-20220331235441007.png)]

每个密码都试一下得到flag

image-20220331235910980

十四:信息化时代下的步伐 数字转中文

image-20220401104519034

image-20220401104552756

数字转中文使用中文电码工具

中文电码查询 Chinese Commercial Code - 标准电报码免费在线查询|姓名电码|美国签证电码 (mcdvisa.com)

在这里插入图片描述

十五:传统知识+古典密码 栅栏密码与凯撒密码 辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳。

题目描述

在这里插入图片描述

在这里插入图片描述

2830230817101630+60即每个数字都加60

88 90 83 68 77 70 76 90

两个数字对应一个字母,想到ASCII表

查表可得 X Z S D M F L Z

古典加密一般为栅栏密码与凯撒密码,都丢进去试试

不知道为什么上一个栅栏密码解答和网络上的题解不太一样

CTF在线工具-在线栅栏密码加密|在线栅栏密码解密|栅栏密码算法|Railfence Cipher (hiencode.com)

这个题目天干地支都是以2计数,所以栅栏密码为2

image-20220401111815040

然后再丢到凯撒密码一个个试

image-20220401111849973

flag{SHUANGYU}

记住是大写且要包上flag

十六:凯撒?替换?呵呵 暴力破解网站

这个题目与好野蛮

MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}

在这里插入图片描述

来个暴力破解网站喽

quipqiup - cryptoquip and cryptogram solver

在这里插入图片描述

选择第一个去掉空格就是flag

flag{substitutioncipherdecryptionisalwayseasyjustlikeapieceofcake}

十七 猪圈密码

题目描述:

在这里插入图片描述

打开发现是一张图片

image-20220401155436404

CTF在线工具-在线猪圈密码加密|在线猪圈密码解密|猪圈密码算法|Pigpen Cipher (hiencode.com)

在这里插入图片描述

真是可爱的一道题啊

十八:RSA1

RSA算法原理 - 知乎 (zhihu.com)

之前只是学会了如何使用工具,这题开始认真学会RSA算法

互质关系:如果两个正整数,除了1以外,没有其他公因子,则称他们为互质关系

欧拉函数

任意给定正整数n,在小于等于n的正整数之中,有多少个与n构成互质关系,用 φ(n)表示

若n为质数,φ(n)=n-1。

若n是指数的某一次方即n=pk,则φ(pk)=pk-p(k-1)

若n=pq(两个质数)

则φ(n)=φ(pq)=φ§φ(q)

欧拉定理

如果两个正整数a和n互质,则a的φ(n)次方-1可以被n整除。

模反元素

如果a与n互为质数,则一定可以找到整数d使得pd-1能被n整除

记作da=1(mod n)

RSA算法

1:随机选取两个不相等的质数p和q

2:计算p与q的乘积n

3:计算n的欧拉函数φ(n)

4:随机选取整数e,e与φ(n)互质

5:计算出e对于φ(n)的模反元素d

题目如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aZoq0ceo-1649124329261)(https://raw.githubusercontent.com/lllwky/botany/main/img/image-20220401163349449.png)]

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

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

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

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

如果c与p互为质数,则一定可以找到整数d使得dp-1能被c整除

记作da=1(mod n)

最后的结果

在这里插入图片描述

再十六进制转文本

16进制转换,16进制转换文本字符串,在线16进制转换 | 在线工具 (sojson.com)

noxCTF{W31c0m3_70_Ch1n470wn}将noxCTF转换为flag{}

十九:old fashion 爆破工具

在这里插入图片描述

不会的统一用爆破工具吧

quipqiup - cryptoquip and cryptogram solver

image-20220401205438472

二十 js表情包转换

打开文件发现

image-20220403232436947

进入转换网站

aaencode - Encode any JavaScript program to Japanese style emoticons (_) (utf-8.jp)

按F12打开控制台

在这里插入图片描述

然后输出即可得到flag

image-20220403232946670

二十一:Cipher

在这里插入图片描述

打开破解网站

Playfair Cipher (rumkin.com)

密钥根据题目公平的玩吧,是playfair

在这里插入图片描述

flag{itisqstaproblegmavefip}

(要把大写改为小写)

二十二:摩斯密码01版

这题的题目找不到了,那就直接上代码吧

s = '0010 0100 01 110 1111011 11 11111 010 000 0 001101 1010 111 100 0 001101 01111 000 001101 00 10 1 0 010 0 000 1 01111 10 11110 101011 1111101'
b=s.replace('0', '.')
print(b.replace('1','-'))

然后再用网站进行破解

二十三 HEX密码 666c61677b57336c63306d655f54305f4354467d

与base64很像但是没有=所以为hex

Hex编码/解码-在线工具 (toolbaba.cn)

二十四 base family

最后发现是base91

BASE91编码解码 - Bugku CTF

在这里插入图片描述

得到base64再进入base64进行解密

在这里插入图片描述

解密工具集合

在线工具 - Bugku CTF

int(b.replace(‘1’,‘-’))

然后再用网站进行破解

二十三 HEX密码 666c61677b57336c63306d655f54305f4354467d

与base64很像但是没有=所以为hex

Hex编码/解码-在线工具 (toolbaba.cn)

二十四 base family

最后发现是base91

BASE91编码解码 - Bugku CTF

在这里插入图片描述

得到base64再进入base64进行解密

在这里插入图片描述

解密工具集合

在线工具 - Bugku CTF

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值