CTF练习-BUUCTF(1~25)

文章目录

    • Crypto
      • 题目1 一眼就解密
        • 题目
        • 解题思路
        • flag
      • 题目2 md5
        • 题目
        • 解题思路
        • flag
      • 题目3 Url编码
        • 题目
        • 解题思路
        • flag
      • 题目4 看我回旋踢
        • 题目
        • 解题思路1
        • 解题思路2
        • flag
      • 题目5 摩丝
        • 题目
        • 解题思路
        • flag
      • 题目6 passwd
        • 题目
        • 解题思路
        • flag
      • 题目7 变异凯撒
        • 题目
        • 解题思路
        • flag
      • 题目8 Quoted-printable
        • 题目
        • 解题思路
        • flag
        • 知识拓展
      • 题目9 Rabbit
        • 题目
        • 解题思路
        • flag
        • 知识拓展
        • 知识点
      • 题目10 篱笆墙的影子
        • 题目
        • 解题思路
        • flag
      • 题目11 RSA
        • 题目
        • 解题思路1
        • 解题思路2
      • 题目12 丢失的MD5
        • 题目
        • 解题思路
        • flag
        • 知识扩展
      • 题目13 Alice与Bob
        • 题目
        • 解题思路1
        • 解题思路2
        • flag
      • 题目14 大帝的密码武器
        • 题目
        • 解题思路1
          • flag
        • 解题思路2
          • flag
      • 题目15 rsarsa
        • 题目
        • 解题思路
          • 代码1-gmpy2
          • 代码2-libnum
        • flag
      • 题目16 Windows系统密码
        • 题目
        • 解题思路
        • flag
      • 题目17 信息化时代的步伐
        • 题目
        • 解题思路
        • flag
        • 知识点
      • 题目18 凯撒 替换 呵呵!
        • 题目
        • 解题思路
        • flag
        • 网址记录
      • 题目19 萌萌哒的八戒
        • 题目
        • 解题思路
        • flag
        • 补充知识-猪圈密码
        • 补充知识-圣堂武士密码
      • 题目20 传统知识+古典密码
        • 题目
        • flag
      • 题目21 权限获得第一步
        • 题目
        • flag
      • 题目22 RSA1
        • 题目
        • flag
      • 题目23 世上无难事
        • 题目
        • 解题思路
        • flag
      • 题目24 old-fashion
        • 题目
        • 解题思路
      • 题目25 Unencode
        • 题目
        • 解题思路
        • flag

BUUCTF(新靶场,难度中上,搜集了很多大赛原题)

https://buuoj.cn/

https://buuoj.cn/challenges

Crypto

题目1 一眼就解密

题目

下面的字符串解密后便能获得flag:ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30=注意:得到的 flag 请包上 flag{} 提交

解题思路

题目后面有=就先猜一手base64编码,直接复制base64解码 解密即可得到flag

flag

flag{THE_FLAG_OF_THIS_STRING}

题目2 md5

题目

e00cf25ad42683b3df678c61f42c6bda

解题思路

题目名字就叫MD5,那我们直接把这个复制到md5在线解密 即可得到flag

md5在线查询

admin1

加上flag{},即flag{admin}提交

flag

flag{admin}

题目3 Url编码

题目

%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d

解题思路

老规矩这种题目直接复制url解码 里面解密即可得到flag

解码得and 1=1

flag

flag{and 1=1}

题目4 看我回旋踢

题目

看我回旋踢 synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}

注意:得到的 flag 请包上 flag{} 提交

解题思路1

直接复制到CTFcrackToolsv里面解密

Rot13解码: ★ flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1}
Rot18解码: ★ flag{0cd6559d-31a0-91d3-b275-beb0ba5962e6}

解题思路2

可以看到,字符串基本是还是对应上了flag的格式,不难想到是单字母替换加密

这一题可以直接尝试爆破,令"synt" = "flag"即可,简单的暴力美学

常用的爆破网站 https://quipqiup.com/

先尝试了凯撒加密,代码如下:

import stringdef kaisa(s, k): #定义函数 接受一个字符串s 和 一个偏移量klower = string.ascii_lowercase #小写字母upper = string.ascii_uppercase #大写字母before = string.ascii_letters #无偏移的字母顺序 小写+大写after = lower[k:] + lower[:k] + upper[k:] + upper[:k]#偏移后的字母顺序 还是小写+大写#分别把小写字母和大写字母偏移后再加到一起 table = ''.maketrans(before, after)  #创建映射表return s.translate(table) #对s进行偏移 即加密if __name__ == "__main__":s = "synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}"offset = ord('f') - ord('s')#计算偏移量#print(offset)print(kaisa(s, offset))
flag

flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1}

题目5 摩丝

题目

摩丝 .. .-.. --- ...- . -.-- --- ..-

注意:得到的 flag 请包上 flag{} 提交

解题思路

摩斯密码在线解密

摩斯解码得ILOVEYOU

flag

flag{ILOVEYOU}

题目6 passwd

题目
姓名:张三 
生日:19900315key格式为key{xxxxxxxxxx}

注意:得到的 flag 请包上 flag{} 提交

解题思路

看到key{xxxxxxxxxx}中key的长度为10位,联想到张三可能取密码的习惯,根据题目信息无非就那么几种

zs19900315
19900315zs
1990zs0315
稍作尝试可得到正确答案

flag

flag{zs19900315}

题目7 变异凯撒

题目
加密密文:afZ_r9VYfScOeO_UL^RWUc
格式:flag{ }

注意:得到的 flag 请包上 flag{} 提交

解题思路

看不出字符串是怎么处理的,但是标题给了提示,肯定是基于凯撒加密的

凯撒加密老规矩,先将前四个字符猜测为flag,然后仔细分析可以发现偏移量不是固定值

a -> f 移位5
f -> l 移位6
Z -> a 移位7
可以看出是一个递增的偏移量,那么直接上代码:

c = "afZ_r9VYfScOeO_UL^RWUc"
m = ''
for i in range(len(c)):m += chr(ord(c[i]) + 5 + i)
print(m)
flag

flag{Caesar_variation}

题目8 Quoted-printable

题目

=E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6
注意:得到的 flag 请包上 flag{} 提交

解题思路

首先这个题目就是试一加密编程
试一我们直接用Quoted-printable解密 即可
Quoted解码: 那你也很棒哦

flag

flag{那你也很棒哦}

知识拓展

quoted-printable 就是说用一些可打印常用字符,表示一个字节(8位)中所有非打印字符方法
任何一个8位的字节值可编码为3个字符:一个等号”=”后跟随两个十六进制数字(0–9或A–F)表示该字节的数值 例如,ASCII码换页符(十进制值为12)可以表示为”=0C”, 等号”=”(十进制值为61)必须表示为”=3D”. 除了可打印ASCII字符与换行符以外,所有字符必须表示为这种格式
所有可打印ASCII字符(十进制值的范围为33到126)可用ASCII字符编码来直接表示, 但是等号”=”(十进制值为61)不可以这样直接表示
ASCII的水平制表符(tab)与空格符, 十进制为9和32, 如果不出现在行尾则可以用其ASCII字符编码直接表示。如果这两个字符出现在行尾,必须QP编码表示为”=09″ (tab)或”=20″ (space).
如果数据中包含有意义的行结束标志,必须转换为ASCII回车(CR)换行(LF)序列,既不能用原来的ASCII字符也不能用QP编码的”=”转义字符序列。 相反,如果字节值13与10有其它的不是行结束的含义,它们必须QP编码为=0D与=0A.
quoted-printable编码的数据的每行长度不能超过76个字符. 为满足此要求又不改变被编码文本,在QP编码结果的每行末尾加上软换行,即在每行末尾加上一个”=”, 但并不会出现在解码得到的文本中

题目9 Rabbit

题目

U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI
注意:得到的 flag 请包上 flag{} 提交

解题思路

题目叫Rabbit这是一个加密,我们直接Rabbit在线解密 即可
Rabbit 在线解密 http://www.jsons.cn/rabbitencrypt/
Cute_Rabbit

flag

flag{Cute_Rabbit}

知识拓展

Rabbit
https://blog.csdn.net/l2645470582_/article/details/121372104
Rabbit 是一种高速流密码,Rabbit 使用一个 128 位密钥和一个 64 位初始化向量。 该加密算法的核心组件是一个位流生成器,该流生成器每次迭代都会加密 128 个消息位。

知识点

rabbit解密
密文特征与base64类似,末尾会有==
若base64等解不通,可以尝试rabbit解密

题目10 篱笆墙的影子

题目

felhaagv{ewtehtehfilnakgw}

星星还是那颗星星哟 月亮还是那个月亮 山也还是那座山哟 梁也还是那道梁 碾子是碾子 缸是缸哟 爹是爹来娘是娘 麻油灯呵还吱吱响 点的还是那么丁点亮 哦哦 注意:得到的 flag 请包上 flag{} 提交

解题思路

不难看出字符串仍具有类似flag的格式,由于’{'前面并非四个字符,首字符’f’也没有被替换,所以应该不是凯撒加密,或单字母替换
再根据标题提示信息,猜测是栅栏密码,前面1,3,5,7位连结有"flag",故有两栏:

f l a g { w e t h i n k w
e h a v e t h e f l a g }

用栅栏在线解密即可

栅栏密码
分为2栏,解密结果为:flag{wethinkwehavetheflag}

flag

flag{wethinkwehavetheflag}

题目11 RSA

题目
在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17
求解出d作为flga提交

注意:得到的 flag 请 将 noxCTF 替换为 flag ,格式为 flag{} 提交。

解题思路1
# -*- coding:utf-8 -*-import gmpy2, libnum
from Crypto.Util.number import long_to_bytesimport gmpy2
p = 473398607161
q = 4511491
e = 17
d = gmpy2.invert(e,(p-1)*(q-1))
print(d)
# 125631357777427553
解题思路2

学习RSAtool2的使用:

1.Number Base 设置为十进制

2.注意:Public Exponent这里要使用16进制的数,如果公钥e=17的话,就应该填入十六进制的11

3.给出p,q,e的话直接填入,再点击Calc.D,获得d

4.给出的是n和e的话,输入n和e,点击Factor N(分解),得到p,q,再重复第3步就能得到d了

注意e填进去是16进制,需要将17转hex得到11再填进去

用RSA-Tool 2 by 1E!即可
RSA-Tool下载链接

题目12 丢失的MD5

题目

我们得到了一串神秘字符串:TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母,为了确定这个神秘字符串,我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全,E903???4DAB???08???51?80??8A?,请猜出神秘字符串的原本模样,并且提交这个字串的32位MD5码作为答案。

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

注意:得到的 flag 请包上 flag{} 提交
已知部分明文和明文的部分MD5值,求解明文及MD5

解题思路

已知部分明文和明文的部分MD5值,求解明文及MD5
直接遍历缺失的字符,验证补全的字符串与泄露的部分MD5能否对上即可
附上代码:

看代码用python2.x的版本运行即可获得flag

# -*- coding: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'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM').encode('utf8'))des=m.hexdigest()if 'e9032' in des and 'da' in des and '911513' in des:print(des)
flag

flag{e9032994dabac08080091151380478a2}

知识扩展

hashlib模块
(1)此模块支持多种摘要算法
(2)hashlib.md5()
通过构造函数获得一个hash对象
(3)hash.update()
更新hash对象。连续的调用该方法相当于连续的追加更新。例如m.update(a); m.update(b)相当于m.update(a+b)由于消息摘要是只针对当前状态产生的,所以每一次update后,再次计算hexdigest()的值都会不一样。
(4)hash.digest()
返回bytes格式的消息摘要
(5)hash.hexdigest()
与digest方法类似,不过返回的是两倍长度的字符串对象,所有的字符都是十六进制的数字。
(6)hash.copy()
返回一个hash对象的拷贝

题目13 Alice与Bob

题目

密码学历史中,有两位知名的杰出人物,Alice和Bob。他们的爱情经过置换和轮加密也难以混淆,即使是没有身份认证也可以知根知底。就像在数学王国中的素数一样,孤傲又热情。下面是一个大整数:98554799767,请分解为两个素数,分解后,小的放前面,大的放后面,合成一个新的数字,进行md5的32位小写哈希,提交答案。 注意:得到的 flag 请包上 flag{} 提交

解题思路1

题目都说了分解素数,小前大后
素数分解

直接可以看出101999966233

按要求进行MD5,提交

import hashlib# s = hashlib.md5(101999966233)
s = hashlib.md5('101999966233'.encode('utf8')).hexdigest().lower()  # 注意大小写
print(s)
解题思路2

里面涉及到扩展欧几里得算法、二分法计算平方根、费马检验等的实现,具体细节可参考代码

主要的分解思路是

假设p = x + y,q = x - y
则n = p * q = x2 - y2,在这个式子中,有x > sqrt(n)
所以从sqrt(n)开始往上寻找x,每步加一
验证x2 - n是否能开方,若能,则y = sqrt(x2 - n)
此时,必然有n = p * q
但仍不能保证n被分解为了两个素数,因此要进行素性检验,这里用了10轮费马检验
若不通过检验,重复上述步骤
若通过检验,则n = p * q分解成功

代码

from random import random#扩展欧几里得算法
#返回值列表中,x是a的逆元(mod b),q是gcd(a,b),若x是0,则表示没有逆元,有x*a + y*b = 1def Ex_Euclid(a,b):if 0==b:x=1;y=0;q=areturn x,y,qxyq=Ex_Euclid(b,a%b)x=xyq[0];y=xyq[1];q=xyq[2]temp=x;x=y;y=temp-a//b*yreturn x,y,q#获取a的逆元(mod b)的函数,目的是为了封装获取逆元的功能
def Get_Inverse(a,b):return Ex_Euclid(a,b)[0]#获取a和b的最大公约数函数,目的是为了封装获取最大公约数的功能
def gcd(a,b):return Ex_Euclid(a,b)[2]#快速模幂运算       
def quick_momi(a,b,c):a=a%cans=1while b !=0:if b&1:ans=(ans*a)%cb>>=1a=(a*a)%creturn ans#费马检验
#n为待检验的整数,rounds为检验的重复轮数
#返回值为1时代表通过检验
def fermat_test(n, rounds):for i in range(rounds):b = int((n - 4) * random() + 2)#生成一个[2,n-2]之间的随机整数if gcd(b, n) > 1:return 0r = quick_momi(b, n - 1, n)if r != 1:return 0return 1#经过十轮检验的费马测试
def fermat10(n):return fermat_test(n, 20)#二分法计算平方根
def recursion(num, low, high):if high - low == 1:return highmid = (high + low) // 2if pow(mid, 2) > num:return recursion(num, low, mid)elif pow(mid, 2) < num:return recursion(num, mid, high)else:return mid#计算平方根,返回值为真实值向上取整
def sqrt(n):return recursion(n, 0, n)#判断n是否为平方数
def Is_Square_number(n):s = sqrt(n)if s * s == n:return 1return 0#检验
def check(n, p, q):m = q * pif fermat10(p) and fermat10(q) and m == n:return 1return 0#因数分解,返回值(x, y)分别为n的因数
def Factorization(n):x = sqrt(n)while(True):y2 = x * x - nif(Is_Square_number(y2)):y = sqrt(y2)if check(n, x + y, x - y):return (x + y, x - y)x = x + 1n = 98554799767
(p, q) = Factorization(n)
print("N的分解结果为 : ")
print("%d = %d * %d" % (n, p, q))

再根据题目要求,小的放前面,大的放后面,合成一个新的数字,进行md5的32位小写哈希:
MD5(101999966233) = d450209323a847c8d01c6be47c81811a
代码比较冗长,使用gmpy2优化代码

import gmpy2
#因数分解,返回值分别为n的因数
def Factorization(n):x = gmpy2.iroot(n,2)[0] + 1 #gmpy2.iroot(x,n) #x开n次根while(True):y2 = x * x - ny = gmpy2.iroot(y2,2)[0]p, q = x + y, x - yif (p) * (q) == n:if gmpy2.is_prime(p) and gmpy2.is_prime(q): #素性检测return (p, q)x = x + 1
flag

flag{d450209323a847c8d01c6be47c81811a}

题目14 大帝的密码武器

题目
公元前一百年,在罗马出生了一位对世界影响巨大的人物,他生前是罗马三巨头之一。他率先使用了一种简单的加密函,因此这种加密方法以他的名字命名。
以下密文被解开后可以获得一个有意义的单词:FRPHEVGL
你可以用这个相同的加密向量加密附件中的密文,作为答案进行提交。密文: ComeChina
解题思路1

“罗马三巨头” + “加密以名字命名” = 凯撒加密

直接对FRPHEVGL进行凯撒枚举

import stringdef kaisa(s, k): #定义函数 接受一个字符串s 和 一个偏移量klower = string.ascii_lowercase #小写字母upper = string.ascii_uppercase #大写字母before = string.ascii_letters #无偏移的字母顺序 小写+大写after = lower[k:] + lower[:k] + upper[k:] + upper[:k]#偏移后的字母顺序 还是小写+大写#分别把小写字母和大写字母偏移后再加到一起 table = ''.maketrans(before, after)  #创建映射表return s.translate(table) #对s进行偏移 即加密s = "FRPHEVGL"
for i in range(26): print(kaisa(s, i).lower())

运行结果如下:

frphevgl
gsqifwhm
htrjgxin
iuskhyjo
jvtlizkp
kwumjalq
lxvnkbmr
mywolcns
nzxpmdot
oayqnepu
pbzrofqv
qcaspgrw
rdbtqhsx
security
tfdvsjuz
ugewtkva
vhfxulwb
wigyvmxc
xjhzwnyd
ykiaxoze
zljbypaf
amkczqbg
bnldarch
comebsdi
dpnfctej
eqogdufk

在其中找到一个有意义的单词security
而从FRPHEVGL->SECURITY 偏移13
同样的用偏移13去加密附件中的内容,得到
ComeChina->PbzrPuvan

flag

flag{PbzrPuvan}

解题思路2

使用[随波逐流]CTF编码工具 解密,观察数字
key1 #13: SECURITY

按照偏移量13 ,使用加密解密编码解码工具SENCODE , 计算ComeChina明文,得到PbzrPuvan
flag{PbzrPuvan}

方法二:python脚本

str1 = 'FRPHEVGL'
str2 = str1.lower()                                 #转换为小写方便识别
num = 1                                             #偏移量
for i in range(26):print("{:<2d}".format(num),end = ' ')for temp in str2:if(ord(temp)+num > ord('z')):               #如果超出'z',需要重新映射会a~z这26个字母上print(chr(ord(temp)+num-26),end = '')else:print(chr(ord(temp)+num),end = '')num += 1print('')str = 'ComeChina'for temp in str:if (ord(temp) + 13 > ord('z')):print(chr(ord(temp) + 13 - 26), end='')else:print(chr(ord(temp) + 13), end='')print('')
PbzrPuvan
flag

flag{PbzrPuvan}

题目15 rsarsa

题目
Math is cool! Use the RSA algorithm to decode the secret message, c, p, q, and e are parameters for the RSA algorithm.p =  9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q =  11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e =  65537
c =  83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034Use RSA to find the secret message
解题思路

RSA 已知p、q、e、密文c,求m ,直接上脚本

代码1-gmpy2
# -*- coding:utf-8 -*-import gmpy2
import binascii
from Crypto.Util.number import long_to_bytes
p=9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q=11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e=65537
c=83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
n=p*qphi = (p-1)*(q-1)
#2.求d
d = gmpy2.invert(e,phi)
#3.m=pow(c,d,n)
m = gmpy2.powmod(c,d,n)print(m)
# 5577446633554466577768879988
代码2-libnum
# -*- coding:utf-8 -*-import libnum
import binascii
from Crypto.Util.number import long_to_bytes
p=9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q=11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e=65537
c=83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
n=p*qphi = (p-1)*(q-1)
#2.求d
d =libnum.invmod(e,phi)
m=pow(c,d,n)
print(m)
flag

flag{5577446633554466577768879988}

题目16 Windows系统密码

题目
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
ctf:1002:06af9108f2e1fecf144e2e8adef09efd:a7fcb22a88038f35a8f39d503e7f0062:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SUPPORT_388945a0:1001:aad3b435b51404eeaad3b435b51404ee:bef14eee40dffbc345eeb3f58e290d56:::

注意:得到的 flag 请包上 flag{} 提交

解题思路

这道题看上去是windows系统中存储的账户密钥文件,pass_hash.txt提示出信息经过hash处理,常用的hash函数有md5、sha1等

里面共出现有5个32位hash值,应该是md5

aad3b435b51404eeaad3b435b51404ee

31d6cfe0d16ae931b73c59d7e0c089c0

06af9108f2e1fecf144e2e8adef09efd

a7fcb22a88038f35a8f39d503e7f0062

bef14eee40dffbc345eeb3f58e290d56

在网站上分别进行hash查询

查询md5 https://www.somd5.com/
其中,a7fcb22a88038f35a8f39d503e7f0062(ctf第二串32位字符)解得
flag{good-luck}

flag

flag{good-luck}

题目17 信息化时代的步伐

题目

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

解题思路

看到是整数,先尝试用base36进行编码,得到

yzdawx0tzyyevldy1ooxx7m

题目提示flag答案是中文,那么这个答案显然不对

但是十进制数据没有对应的常用汉字编码

上网学习一波后,由"清政府拒绝进入信息化时代"->中文电码

606046152623600817831216121621196386用中文电码编码得到:

http://code.mcdvisa.com/

中文电码反查汉字结果:

  • 6060:计
  • 4615:算
  • 2623:机
  • 6008:要
  • 1783:从
  • 1216:娃
  • 1216:娃
  • 2119:抓
  • 6386:起

计算机要从娃娃抓起

flag

flag{计算机要从娃娃抓起}

知识点

来源
  中文电码,又称中文商用电码、中文电报码或中文电报明码,原本是于电报之中传送中文信息的方法。它是第一个把汉字化作电子讯号的编码表。
  自摩尔斯电码在1835年发明后,一直只能用来传送英语或以拉丁字母拼写的文字。1873年,法国驻华人员威基杰(S·A·Viguer)参照《康熙字典》的部首排列方法,挑选了常用汉字6800多个,编成了第一部汉字电码本,名为《电报新书》。后由我国的郑观应将其改编成为《中国电报新编》。这是中国最早的汉字电码本。中国人最早研制的电报机华侨商人王承荣从法国回国后,与福州的王斌研制出我国第一台电报机,并呈请政府自办电报。清政府拒不采纳。

应用
  中文电码可用作电脑里的中文输入法,但因中文电码是“无理码”,记忆困难,一般用户几乎无法熟练地掌握使用。
  在香港,每个有中文姓名的市民的身份证上,均会在他的姓名下面,印有中文电码,外国人取得的入港签证亦有印上。在很多政府或商业机构的表格中,都会要求填写者填写他的中文电码,以便输入电脑。
  美国签证申请表(DS-160表)中,要求申请人填写姓名的中文电码,一些生僻字没有对应的中文电码时,可用“0000”代替。

原理
  中文电码表采用了四位阿拉伯数字作代号,从0001到9999按四位数顺序排列,用四位数字表示最多一万个汉字、字母和符号。汉字先按部首,后按笔划排列。字母和符号放到电码表的最尾。后来由于一万个汉字不足以应付户籍管理的要求,又有第二字面汉字的出现。在香港,两个字面都采用同一编码,由输入员人手选择字面;在台湾,第二字面的汉字会在开首补上“1”字,变成5个数字的编码。

题目18 凯撒 替换 呵呵!

题目

MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO} 注意:得到的 flag 请包上 flag{} 提交, flag{小写字母}

解题思路

MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}

这里flag基本格式还在,明显是一个单字母替换的题

分析mthj->flag偏移分别为7、8、7、3,没有规律,所以应该不是凯撒加密

直接上网站进行爆破:https://quipqiup.com/

令mthj = flag,爆破得到

FLAG{ SUBSTITUTION CIPHER DECRYPTION IS ALWAYS EASY JUST LIKE A PIECE OF CAKE}得到结果即为flag,大写还是小写忘了,这是大小写转换 的在线网页

删除空格

flag{substitutioncipherdecryptionisalwayseasyjustlikeapieceofcake}

flag

flag{substitutioncipherdecryptionisalwayseasyjustlikeapieceofcake}

网址记录

爆破网站

https://quipqiup.com/#google_vignette

大小写转换

https://www.iamwawa.cn/daxiaoxie.html

题目19 萌萌哒的八戒

题目

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

解题思路

http://www.metools.info/code/c90.html

一看就是猪圈密码

在这里插入图片描述

flag

flag{whenthepigwanttoeat}

补充知识-猪圈密码

在这里插入图片描述
在这里插入图片描述

补充知识-圣堂武士密码

在这里插入图片描述

题目20 传统知识+古典密码

题目
传统知识+古典密码
小明某一天收到一封密信,信中写了几个不同的年份辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳。信的背面还写有“+甲子”,请解出这段密文。key值:CTF{XXX}
传感器
5555555595555A65556AA696AA6666666955
这是某压力传感器无线数据包解调后但未解码的报文(hex)已知其ID为0xFED31F,请继续将报文完整解码,提交hex。提示1:曼联

注意:得到的 flag 请包上 flag{} 提交

解题思路

在古代采用干支纪年法,即使用10天干12地支的组合记录年号,60年完成一个循环周期(60是10和12的最小公倍数),称一个"甲子",天干地支表如下:
在这里插入图片描述

辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳分别对应:

28,30,23,08,17,10,16,30

再加上一甲子(60),得到

88,90,83,68,77,70,76,90

88(X) 90(Z) 83(S) 68(D) 77(M) 70(F) 76(L) 90(Z)

对应Ascll文本为:XZSDMFLZ

作为flag提交,答案不对

根据标题提示:传统知识+古典密码

可能还需要用古典密码破译

尝试过几种不同的古典密码,都没有看到正确结果,那么可能是两种以上古典密码的结合

最终通过栅栏密码+凯撒密码解出正确答案

XZSDMFLZ只有8位字符,栏数只能是2或者4

分为2栏时,解密结果为:XMZFSLDZ

分为4栏时,解密结果为:XSMLZDFZ

将这两个栅栏解密得到的字符串分别凯撒爆破
发现此时shungyu能读懂可能是flag

也可以用代码爆破,附上代码:

import stringdef kaisa(s, k): #定义函数 接受一个字符串s 和 一个偏移量klower = string.ascii_lowercase #小写字母upper = string.ascii_uppercase #大写字母before = string.ascii_letters #无偏移的字母顺序 小写+大写after = lower[k:] + lower[:k] + upper[k:] + upper[:k]#偏移后的字母顺序 还是小写+大写#分别把小写字母和大写字母偏移后再加到一起 table = ''.maketrans(before, after)  #创建映射表return s.translate(table) #对s进行偏移 即加密if __name__ == "__main__":s1 = "XMZFSLDZ"s2 = "XZSDMFLZ"for i in range(26): print("s1:" + kaisa(s1, i).lower())for i in range(26): print("s2:" + kaisa(s2, i).lower())

最终在XMZFSLDZ的基础上,凯撒枚举出一个有意义的字符串SHUANGYU

(代码里边我让结果用小写字母输出,是我觉得小写更容易读,flag最后还是大写)

flag

flag{SHUANGYU}

题目21 权限获得第一步

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

你猜这是什么东西,记得破解后把其中的密码给我。答案为非常规形式。 注意:得到的 flag 请包上 flag{} 提交

F4AD50F57683D4260DFD48AA351A17A8 MD5解码为3617656

https://www.somd5.com/

flag

flag{3617656}

题目22 RSA1

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

注意:得到的 flag 请包上 flag{} 提交

# -*- coding:utf-8 -*-p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229
q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469
dp = 6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929
dq = 783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041
c = 24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852import gmpy2
I = gmpy2.invert(q,p)
mp = pow(c,dp,p)
mq = pow(c,dq,q)               #求幂取模运算m = (((mp-mq)*I)%p)*q+mq       #求明文公式
print(m)
print(hex(m))                  #转为十六进制# 11630208090204506176302961171539022042721137807911818876637821759101
# 0x6e6f784354467b57333163306d335f37305f4368316e343730776e7d

再十六进制转字符

https://www.bejson.com/convert/ox2str/#google_vignette

noxCTF{W31c0m3_70_Ch1n470wn}

flag{W31c0m3_70_Ch1n470wn}

Dp、Dq泄露
https://blog.csdn.net/m0_51507437/article/details/122440936
https://blog.csdn.net/weixin_45369385/article/details/109208109
dp ≡ d % (p - 1)
dq ≡ d % (q - 1)
已知dp、dq、p、q、c
在这里插入图片描述

flag

flag{W31c0m3_70_Ch1n470wn}

题目23 世上无难事

题目

以下是某国现任总统外发的一段指令,经过一种奇异的加密方式,毫无规律,看来只能分析了。请将这段语句还原成通顺语句,并从中找到key作为答案提交,答案是32位,包含小写字母。 注意:得到的 flag 请包上 flag{} 提交

VIZZB IFIUOJBWO NVXAP OBC XZZ UKHVN IFIUOJBWO HB XVIXW XAW VXFI X QIXN VBD KQ IFIUOJBWO WBKAH NBWXO VBD XJBCN NKG QLKEIU DI XUI VIUI DKNV QNCWIANQ XN DXPIMKIZW VKHV QEVBBZ KA XUZKAHNBA FKUHKAKX XAW DI VXFI HBN QNCWIANQ NCAKAH KA MUBG XZZ XEUBQQ XGIUKEX MUBG PKAWIUHXUNIA NVUBCHV 12NV HUXWI XAW DI XUI SCQN QB HZXW NVXN XZZ EBCZW SBKA CQ NBWXO XAW DI DXAN NB NVXAP DXPIMKIZW MBU JIKAH QCEV XA BCNQNXAWKAH VBQN HKFI OBCUQIZFIQ X JKH UBCAW BM XLLZXCQI XAW NVI PIO KQ 640I11012805M211J0XJ24MM02X1IW09
解题思路

https://quipqiup.com/ 直接爆破

0	-1.534	HELLO EVERYBODY THANK YOU ALL RIGHT EVERYBODY GO AHEAD AND HAVE A SEAT HOW IS EVERYBODY DOING TODAY HOW ABOUT TIM SPICER WE ARE HERE WITH STUDENTS AT WAKEFIELD HIGH SCHOOL IN ARLINGTON VIRGINIA AND WE HAVE GOT STUDENTS TUNING IN FROM ALL ACROSS AMERICA FROM KINDERGARTEN THROUGH 12TH GRADE AND WE ARE JUST SO GLAD THAT ALL COULD JOIN US TODAY AND WE WANT TO THANK WAKEFIELD FOR BEING SUCH AN OUTSTANDING HOST GIVE YOURSELVES A BIG ROUND OF APPLAUSE AND THE KEY IS 640E11012805F211B0AB24FF02A1ED09
1	-4.124	HALLE AWARDVEZD THINK DEU ILL ROGHT AWARDVEZD GE IHAIZ INZ HIWA I SAIT HEM OS AWARDVEZD ZEONG TEZID HEM IVEUT TOY SCOBAR MA IRA HARA MOTH STUZANTS IT MIKAPOALZ HOGH SBHEEL ON IRLONGTEN WORGONOI INZ MA HIWA GET STUZANTS TUNONG ON PREY ILL IBRESS IYAROBI PREY KONZARGIRTAN THREUGH 12TH GRIZA INZ MA IRA JUST SE GLIZ THIT ILL BEULZ JEON US TEZID INZ MA MINT TE THINK MIKAPOALZ PER VAONG SUBH IN EUTSTINZONG HEST GOWA DEURSALWAS I VOG REUNZ EP ICCLIUSA INZ THA KAD OS 640A11012805P211V0IV24PP02I1AZ09

THE KEY IS 640E11012805F211B0AB24FF02A1ED09

转成小写

flag{640e11012805f211b0ab24ff02a1ed09}

flag

flag{640e11012805f211b0ab24ff02a1ed09}

题目24 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

注意:得到的 flag 请包上 flag{} 提交

解题思路

https://quipqiup.com/ 直接爆破

0	-3.426	Xl fogkvryoeksg, e hjdhvxvjvxrl fxksao xh e zavsrb rc alfrbxly dg wsxfs jlxvh rc knexlvaiv eoa oaknefab wxvs fxksaovaiv, effrobxly vr e oayjneo hghvaz; the units may be single letters (the most common), pairs of letters, triplets of letters, mixtures of the above, and so forth. The receiver deciphers the text by performing an inverse substitution. So the flag is n1_2hen-d3_hu1-mi-ma_a
1	-3.477	Kl fogzvryoezsg, e hwdhvkvwvkrl fkzsao kh e javsrb rc alfrbkly dg xskfs wlkvh rc zneklvaiv eoa oaznefab xkvs fkzsaovaiv, effrobkly vr e oaywneo hghvaj; the units may be single letters (the most common), pairs of letters, triplets of letters, miktures of the above, and so forth. The receiver deciphers the tekt by performing an inverse substitution. So the flag is n1_2hen-d3_hu1-mi-ma_a
2	-3.483	Xl fogyvrzoeysg, e hwdhvxvwvxrl fxysao xh e javsrb rc alfrbxlz dg ksxfs wlxvh rc ynexlvaiv eoa oaynefab kxvs fxysaovaiv, effrobxlz vr e oazwneo hghvaj; the units maz be single letters (the most common), pairs of letters, triplets of letters, mixtures of the above, and so forth. The receiver deciphers the text bz performing an inverse substitution. So the flag is n1_2hen-d3_hu1-mi-ma_a

So the flag is n1_2hen-d3_hu1-mi-ma_a

flag{n1_2hen-d3_hu1-mi-ma_a}

题目25 Unencode

题目

89FQA9WMD<V1A<V1S83DY.#<W3$Q,2TM]

注意:得到的 flag 请包上 flag{} 提交

解题思路

由标题很容易想到这是UUencode

直接UUencode解码得到: flag{dsdasdsa99877LLLKK}

使用[随波逐流]CTF编码工具一键解码

UUencode解码: ★ flag{dsdasdsa99877LLLKK}

flag

flag{dsdasdsa99877LLLKK}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/1991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AJAX——封装_简易axios

1.简易axios_获取身份列表 需求&#xff1a;基于Promise XHR 封装 myAxios函数&#xff0c;获取省份列表展示 步骤&#xff1a; 1.定义 myAxios函数&#xff0c;接收配置对象&#xff0c;返回Promise对象 2.发起XHR请求&#xff0c;默认请求方法为GET 3.调用成功/失败的处…

大模型日报2024-04-22

大模型日报 2024-04-22 大模型资讯 Mistral与Mixtral大型语言模型对比&#xff1a;7B、8x7B及8x22B 摘要: 最近&#xff0c;IT新闻频道广泛报道了新公开的Mixtral 8x22B模型&#xff0c;该模型在多项基准测试中超越了ChatGPT 3.5版本&#xff0c;尤其在MMLU等测试中表现突出。本…

Rust语言之简单涉猎

官方文档 简介 Rust 是一种静态类型语言。静态类型语言是指在编译时对变量和表达式进行类型检查&#xff0c;以确保类型的正确性。在 Rust 中&#xff0c;每个变量都需要在声明时指定其类型(也支持隐式声明&#xff0c;根据值判断)&#xff0c;并且在编译时会进行类型检查&am…

更全面的Embedding介绍

"Embedding"这个词在不同的上下文中有多种含义&#xff0c;以下是一些常见的解释&#xff1a; 计算机科学和人工智能&#xff1a;在机器学习和自然语言处理中&#xff0c;embedding是一种将词汇或短语映射到向量空间的技术。这些向量可以捕捉到词汇的语义含义&#x…

java中spring底层核心原理解析(2)

相关系列 java中spring底层核心原理解析&#xff08;1&#xff09;-CSDN博客 推断构造方法 spring在基于某个类生成bean的过程中&#xff0c;需要利用该学业有成的构造方法来实例化得到一个对象&#xff0c;但是如果一个类存在多个构造方法&#xff0c;spring会使用哪个呢? …

Python与数据库连接

新建表boss create table 创建表 Code import pymysqlcon pymysql.connect(hostlocalhost,\userroot,\password,\port3306,\dbbusiness) cursorcon.cursor() cursor.execute(create table if not exists boss(id int auto_increment primary key,name varchar(20)not null…

设计模式|代理模式(Proxy Pattern)

文章目录 什么是代理模式举例结构优缺点优点缺点代码示例与代理模式相近的设计模式什么是代理模式 代理模式(Proxy Pattern)是一种结构型设计模式,它允许你提供一个间接访问对象的方式,以控制对对象的访问。这种模式通常在不改变原始类代码的情况下,添加一些额外的逻辑或…

WPF2 样式布局

样式布局 WPF中的各类控件元素, 都可以自由的设置其样式。 诸如: 字体(FontFamily) 字体大小(FontSize) 背景颜色(Background) 字体颜色(Foreground) 边距(Margin) 水平位置(HorizontalAlignment) 垂直位置(VerticalAlignment) 等等。 而样式则是组织和重用以上的重要工具。…

Docker基础+虚拟化概念

目录 一、虚拟化简介 1、虚拟化概述 2、cpu的时间分片&#xff08;cpu虚拟化&#xff09; 3、cpu虚拟化性性能瓶颈 4、虚拟化工作 4.1虚拟机工作原理 4.2两大核心组件:QEMU、KVM 4.2.1QEMU&#xff1a; 4.2.2KVM&#xff1a; 5、虚拟化类型 ①全虚拟化&#xff1a; …

MySQL-数据目录

一、MySQL的主要目录结构&#xff08;MySQL 8&#xff09; [rootlocalhost ~]# find / -name mysql find: ‘/proc/30845’: 没有那个文件或目录 find: ‘/proc/30855’: 没有那个文件或目录 /etc/logrotate.d/mysql /etc/selinux/targeted/active/modules/100/mysql /etc/sel…

国内开通chatgpt plus会员方法

ChatGPT镜像 今天在知乎看到一个问题&#xff1a;“平民不参与内测的话没有账号还有机会使用ChatGPT吗&#xff1f;” 从去年GPT大火到现在&#xff0c;关于GPT的消息铺天盖地&#xff0c;真要有心想要去用&#xff0c;途径很多&#xff0c;别的不说&#xff0c;国内GPT的镜像…

微软如何打造数字零售力航母系列科普02 --- 微软低代码应用平台加速企业创新 - 解放企业数字零售力

微软低代码应用平台推动企业创新- 解放企业数字零售力 微软在2023年GARTNER发布的魔力象限图中处于头部领先&#xff08;leader&#xff09;地位。 其LCAP产品是Microsoft Power Apps&#xff0c;扩展了AI Builder、Dataverse、Power Automate和Power Pages&#xff0c;这些都包…

【26考研】考研备考计划4.22开始

A海海: 408:重中之重&#xff0c;和数学同等地位&#xff01;越早开始越好&#xff01;前期直接跟着王道视频课学习&#xff0c;教材直接用王道四本书&#xff0c;顺序结构的话按照数据结构-计算机组成原理-操作系统-计算机网络的顺序来学习。刚开始学会感觉很吃力很难&#xf…

AutoCodeRover: Autonomous Program Improvement

AutoCodeRover&#xff1a;自主程序改进 Abstract 过去几十年来&#xff0c;研究人员在软件开发过程自动化方面取得了重大进展。大型语言模型 (LLM) 的最新进展对开发过程产生了重大影响&#xff0c;开发人员可以使用基于 LLM 的编程助手来实现自动化编码。然而&#xff0c;软…

【Ne4j图数据库入门笔记2】数据导入详解

2.1 导入 CSV 文件 Cypher中 LOAD CSV 的命令允许我们指定文件路径、标头与否、不同的值分隔符以及 Cypher 语句&#xff0c;用于我们如何在图形中对表格数据进行建模。 CSV 是逗号分隔值的文件&#xff0c;通常在 Excel 或其他电子表格工具中查看。可以有其他类型的值作为分…

spring.factories中配置ApplicationContextInitializer实现类却不起作用

自定义了一个ApplicationContextInitializer的实现类如下 public class MyApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {Overridepublic void initialize(ConfigurableApplicationContext applicationCon…

Vue3 Vite配置环境变量

Vue3 Vite配置环境变量 相关文档配置.env文件vite.config.jspackage.json 使用 相关文档 Vite 官方中文文档&#xff1a;https://cn.vitejs.dev/环境变量和模式&#xff1a;https://cn.vitejs.dev/guide/env-and-mode.html#env-file在配置中使用环境变量&#xff1a;https://c…

SCADA系统通过巨控GRM模块实现OPC协议远程监控PLC

SCADA系统和PLC不在同一个地方&#xff0c;需要远程监控和控制PLC&#xff0c;可以通过巨控GRM模块来实现&#xff0c;通过OPC协议转巨控服务器远程读写PLC寄存器&#xff0c;从而完成远程监控PLC。 要实现SCAKDA系统远程监控PLC&#xff0c;关键是要实现SKADA能通过互联网访问…

vue3+leaflet开发地图入门教程(超级详细)

vue3leaflet开发地图01 1.离线地图下载 ​ 离线地图下载器有很多&#xff0c;网络上也很多文档&#xff0c;这里不再详细说明&#xff0c;根据项目要求下载对应的瓦片地图就好 2.leaflet官网及地图加载 ​ Leaflet - 一个交互式地图 JavaScript 库 (leafletjs.cn) ​ 官网…

Java动态代理与Spring AOP中的Cglib动态代理详解

在Java编程中&#xff0c;动态代理是一种在运行时动态创建代理类及其对象的技术。通过动态代理&#xff0c;我们可以在不修改原有类代码的情况下&#xff0c;为这些类添加新的行为或功能。Java提供了两种主要的动态代理机制&#xff1a;基于接口的Java动态代理和基于类的Cglib动…