实验吧密码类题目,

变异凯撒

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 加密密文:afZ_r9VYfScOeO_UL^RWUc
# 规律:'afz_'+'5678'='flag'
Crypto = 'afZ_r9VYfScOeO_UL^RWUc'
Crypto = list(Crypto)
list1 = []
for i in Crypto:
list1.append(ord(i))

num = 5
list2 = []
for i in list1:
i += num
list2.append(i)
num +=1

flag = ''
for i in list2:
flag += chr(i)

print(flag)

传统知识+古典密码

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

1
2
3
4
5
6
7
8
辛卯,顺序为第28个 + 甲子(60) --> 88 -->  X
癸巳,顺序为第30个 + 甲子(60) --> 90 --> Z
丙戌,顺序为第23个 + 甲子(60) --> 93 --> S
辛未,顺序为第8个 + 甲子(60) --> 68 --> D
庚辰,顺序为第17个 + 甲子(60) --> 77 --> M
癸酉,顺序为第10个 + 甲子(60) --> 70 --> F
己卯,顺序为第16个 + 甲子(60) --> 76 --> L
癸巳,顺序为第30个 + 甲子(60) --> 90 --> Z

加上一个甲子即60:88 90 93 68 77 70 76 90
转换成ASCII字母:XZSDMFLZ
栅栏密码(两栏):XMZFSLDZ
凯撒:SHUANGYU
最后按格式提交CTF{xxxxxxxx}即可

what’s wrong with this

传送门:whats-wrong-with-this

try them all

md5爆破:somd5,去掉数字就是flag

rsarsa

别人的Python2脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/python2
import gmpy2

p = 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q = 11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e = 65537
c = 83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
t = (p-1)*(q-1)
n = p*q

# returns d such that e * d == 1 modulo t, or 0 if no such y exists.
d = gmpy2.invert(e,t)

# Decryption
m = pow(c,d,n)
print "Solved ! m = %d" % m

robomunication

用音频软件打开看不出来,得用听得

1
.... . .-.. .-.. --- .-- .... .- - .. ... - .... . -.- . -.-- .. - .. ... -... --- --- .--. -... . . .--.

The Flash-14

闪电侠第二季14集的密码表
5*5密码表
凯撒解密得到flag

奇怪的短信

收到一条奇怪的短信:
335321414374744361715332
你能帮我解出隐藏的内容嘛?!
格式:CTF{xxx}

1
2
3
打开手机9宫格输入法,两个一组,例如21=a,22=b
33 53 21 41 43 74 74 43 61 71 53 32
f l a g i s s i m p l e

RSAROLL

逆推解法

先分解n920139713得到18443,49891

1
2
3
4
5
6
7
8
9
10
11
import gmpy2

p,q,N,e = 18443,49891,920139713,19
d = gmpy2.invert(e,(p-1)*(q-1))
flag = []
with open("RSAROll.txt") as f:
f.readline()
f.readline()
for i in f:
flag.append(chr(pow(int(i),d,N)))
print("".join(flag))

爆破解法

1
2
3
4
5
6
7
8
9
n,e,dic,flag = 920139713,19,{},''
for i in range(33,128):
dic[str(i**e%n)] = chr(i)
with open("RSAROLL.txt") as f:
f.readline()
f.readline()
for i in f:
flag += dic[i.replace('\n','')]
print(flag)

参考:西普CTF-RSAROLL

围在栅栏中的爱

最近一直在好奇一个问题,QWE到底等不等于ABC?

1
-.- .. --.- .-.. .-- - ..-. -.-. --.- --. -. ... --- ---

flag格式:CTF{xxx}

1
2
3
4
5
6
7
8
9
10
11
摩斯电码解密:kiqlwtfcqgnsoo
看下你的键盘qwe=abc,所以:
qwertyuiopasdfghjklzxcvbnm
abcdefghijklmnopqrstuvwxyz

rhasbenvaoylii
栅栏解密,爱呢?
rh as be nv ao yl ii
rabnayihsevoli
反过来看?嗯,爱在这里
iloveshiyanbar

神秘字母

不会,走你:http://hebin.me/2017/09/07/西普ctf-神秘字母/

疑惑的汉字

现有一段经过加密的密文,内容如下:王夫 井工 夫口 由中人 井中 夫夫 由中大。请找出这段密文隐藏的消息明文。
格式:CTF{ }

1
2
3
4
5
当铺密码
就是一种将中文和数字进行转化的密码,算法相当简单:当前汉字有多少笔画出头,就是转化成数字几。
王夫 井工 夫口 由中人 井中 夫夫 由中大
67 84 70 123 82 77 125
ascii转换得到flag

古典密码

密文内容如下{79 67 85 123 67 70 84 69 76 88 79 85 89 68 69 67 84 78 71 65 72 79 72 82 78 70 73 69 78 77 125 73 79 84 65}
请对其进行解密
提示:1.加解密方法就在谜面中,2.利用key值的固定结构

解题思路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
79 67 85 123 67 70 84 69 76 88 79 85 89 68 69 67 84 78 71 65 72 79 72 82 78 70 73 69 78 77 125 73 79 84 65
ASCII得到:O C U { C F T E L X O U Y D E C T N G A H O H R N F I E N M } I O T A
根据第二点,注意格式CTF{ }
OCU{CFTELXOUYDECTNGAHOHRNFIENM}IOTA
CTF{ }

O C U { C F T
E L X O U Y D
E C T N G A H
O H R N F I E
N M } I O T A

OCU{CFT ELXOUYD ECTNGAH OHRNFIE NM}IOTA
1234567 1234567 1234567 1234567 1234567
CTF{COU LDY0UEX CHANGET HEINFOR MATION}
2764513 2764513 2764513 2764513 2764513

困在栅栏里的凯撒

小白发现了一段很6的字符:NlEyQd{seft}
注意大小写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
A B C D E
F G H I J
K L M N O
P Q R S T
U V W X Y Z

C T F{ }
3 20 6

Nl Ey Qd {s ef t}
NEQ{et
lydsf}

N E Q { e t l y d s f }
14 5 17 5 20 12 25 4 19 6
C T F { t i a n s h u }
3 20 6 20 9 1 14 19 8 21

奇妙的音乐

据说flag就藏在这段音乐中,请仔细听。
格式:CTF{}
照片中下面盲文对应密码:kmdonowg

用音频软件打开得出摩斯密码,听力好可以自己听…

1
-.-./-/..-./.--/.--././../-----/---../--.../...--/..---/..--../..---/...--/-../--../

莫斯电码解密,注意格式以及小写

Fair-Play

提示Fair-Play,应该是普莱菲尔密码,密钥在给出的句子中。
参考:playfair密码
The quick brown fox jumps over the lazy dog!
去掉重复字母,ij视为同一个,组成5x5矩阵

1
2
3
4
5
6
7
8
t   h e q u
i/j c k b r
o w n f x
m p s v l
a z y d g
按照加密方法逆向解密,同列这里向左移,不同列矩阵替换得到flag
ih xo {sm zd od ci km od ci sm zd}
cf fx {pl ay fa ir is fa ir pl ay}

在线普莱费尔密码解密,需要将矩阵生成

我喜欢培根

1
2
3
4
5
6
7
8
9
10
11
12
13
-- --- .-. ... . ..--.- .. ... ..--.- -.-. --- --- .-.. ..--.- -... ..- - ..--.- -... .- -.-. --- -. ..--.- .. ... ..--.- -.-. --- --- .-.. . .-. ..--.- -.. -.-. -.-. -.. -.-. -.-. -.-. -.. -.. -.. -.-. -.. -.-. -.-. -.-. -.. -.. -.-. -.-. -.-. -.-. -.-. -.-. -.-. -.-. -.-. -.. -.. -.-. -.. -.-. -.-. -.-. -.-. -.. -.-. -.-. -.-. -.-. -.-. / -.-. -.. -.-. -.-. -.-. -.. -.-. -.-. -.. -.-. / -.-. -.-. -.-. -.. -.-. -.-. -.. -.. -.. -.-. -.-. -.. -.. -.. -.-. -.-. -.. -.-. -.. -..
摩斯电码解密
MORSE..--.-IS..--.-COOL..--.-BUT..--.-BACON..--.-IS..--.-COOLER..--.-DCCDCCCDDDCDCCCDDCCCCCCCCCDDCDCCCCDCCCCC/CDCCCDCCDC/CCCDCCDDDCCDDDCCDCDD
摩斯.. -。-是。-。-酷..。但.. -。-培根.. -。-是。-。-冷..。—

培根密码:
A aaaaa B aaaab C aaaba D aaabb E aabaa F aabab G aabba H aabbb I abaaa J abaab
K ababa L ababb M abbaa N abbab O abbba P abbbb Q baaaa R baaab S baaba T baabb
U babaa V babab W babba X babbb Y bbaaa Z bbaab

DCCDC CCDDD CDCCC DDCCC CCCCC CDDCD CCCCD CCCCC/CDCCC DCCDC/CCCDC CDDDC CDDDC CDCDD
baaba aabbb abaaa bbaaa aaaaa abbab aaaab aaaaa/abaaa baaba/aaaba abbba abbba ababb
s h i y a n b a i s c o o l

注意格式:CTF{xxxxxxxx xx xxxx}

Strength

N都是一样的,应该是RSA公模攻击,首先找个两个互为素数的e

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import gmpy2,re


def PanDuan():
for i in range(len(e)):
a = e[i]
for j in range(i+1,len(e)):
b = e[j]
# print(i,j)
a = a.replace('L','')
b = b.replace('L','')
if gmpy2.gcd(int(a,16),int(b,16)) == 1:
return a,b


f = open('problem.txt')
txt = f.read().splitlines()
f.close()
# print(txt)
List = {}
e = []
for i in range(1,len(txt)):
a = re.findall('729743L : (.*) : 0x',txt[i])
b = re.findall('%s : (.*)L}'%a[0],txt[i])
e.append(a[0])
List[a[0]]=b[0]


a = PanDuan()
print('e1=%d'%int(a[0],16))
print('e2=%d'%int(a[1],16))
print('message1=%d'%int(List[a[0]],16))
print('message2=%d'%int(List[a[1]],16))

判断出两组互为素数的e后,即可进行共模攻击得到flag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import gmpy2,binascii

e1=1804229351
e2=17249876309
message1=78552378607874335972488545767374401332953345586323262531477516680347117293352843468592985447836452620945707838830990843415342047337735534418287912723395148814463617627398248738969202758950481027762126608368555442533803610260859075919831387641824493902538796161102236794716963153162784732179636344267189394853
message2=98790462909782651815146615208104450165337326951856608832305081731255876886710141821823912122797166057063387122774480296375186739026132806230834774921466445172852604926204802577270611302881214045975455878277660638731607530487289267225666045742782663867519468766276566912954519691795540730313772338991769270201
n = '0xa5f7f8aaa82921f70aad9ece4eb77b62112f51ac2be75910b3137a28d22d7ef3be3d734dabb9d853221f1a17b1afb956a50236a7e858569cdfec3edf350e1f88ad13c1efdd1e98b151ce2a207e5d8b6ab31c2b66e6114b1d5384c5fa0aad92cc079965d4127339847477877d0a057335e2a761562d2d56f1bebb21374b729743'
n = int(n,16)

# s & t
gcd, s, t = gmpy2.gcdext(e1, e2)
if s < 0:
s = -s
message1 = gmpy2.invert(message1, n)
if t < 0:
t = -t
message2 = gmpy2.invert(message2, n)
plain = gmpy2.powmod(message1, s, n) * gmpy2.powmod(message2, t, n) % n
print(plain)

# 10进制转16进制再转ASCII
flag = str(binascii.a2b_hex(hex(plain)[2:]),encoding='utf-8')
print(flag)

Decode

16进制转ASCII->URL解码->base64解码->10进制转ASCII

RSA实践

由于gmpy2模块还没用支持py3.6,所以我用py2写的

1
2
3
4
5
6
7
#coding:utf-8
import gmpy2

p=473398607161
q=4511491
e=17
print gmpy2.invert(e,(p-1)*(q-1))

杯酒人生

先将加密的密钥HTRUZYJW进行凯撒解密得到秘钥COMPUTER
再将密文BLOCKCIPHERDESIGNPRINCIPLE进行维吉尼亚密码加密得到flag,注意格式大写
加密网址:http://ctf.ssleye.com/vigenere.html

一串奇怪的数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import hashlib

def md5(s):
return hashlib.md5(s.encode('utf-8')).hexdigest()

def evalCrossTotal(strMd5):
r = 0
for i in strMd5:
r += int("0x%s" % i, 16)
return r

def encryptString(strString, strPasswd):
strPasswdMd5 = md5(strPasswd)
intMd5 = evalCrossTotal(strPasswdMd5)
r = []
for i in range(len(strString)):
r.append(ord(strString[i]) + int("0x%s" % strPasswdMd5[i%32], 16) - intMd5)
intMd5 = evalCrossTotal(md5(strString[:(i+1)])[:16] + md5(str(intMd5))[:16])
return " ".join(map(lambda x: str(x), r))

def decryptString(nList, strPasswd):
strPasswdMd5 = md5(strPasswd)
intMd5 = evalCrossTotal(strPasswdMd5)
r = ""
for i in range(len(nList)):
r += chr(nList[i] - int("0x%s" % strPasswdMd5[i % 32], 16) + intMd5)
intMd5 = evalCrossTotal(md5(r[:(i + 1)])[:16] + md5(str(intMd5))[:16])
return r


def main():
s = "-149 -234 -157 -132 -187 -140 -157 -241 -158 -177 -85 -215 -180 -187 -173 -218 -161 -183 -133 -226 -136 -171 -126 -169 -155 -96 -169 -240 -163 -153 -137 -111 -123 -191 -151 -213 -151 -142 -152 -208 -118 -137 -136 -244 -157 -168 -187 -201 -170 -176 -192 -209 -205 -174 -163 -189 -126 -133 -148 -194 -145 -212 -170 -155 -148 -165 -167 -206 -171 -177 -88 -173 -125 -129 -129 -235 -121 -190 -161 -165"
nList = eval('[%s]' % s.replace(' ', ','))
strPasswd = ''
print(decryptString(nList, strPasswd))

main()

凯撒和某某加密

1
2
3
4
5
6
7
8
9
Crypto ='aZZg/x\ZbavpZiEZp+n)o+'
list1 = ''
for i in Crypto:
num = ord(i) + 5 #多次尝试发现增加5得到类似flag的值
list1 += chr(num)

print(list1)
# f__l4}a_gf{u_nJ_u0s.t0
# 输出看到位置不对,根据flag,所以应该是三个一组的栅栏
1
2
3
4
5
6
7
8
9
10
11
12
根据flag猜测是栅栏
f__
l4}
a_
gf
{u
_n
J_
u0
s.
t0
前两行三个字符,后面是两个字符。真坑

他的情书

打开链接什么鬼,直接view-source查看源代码,查看jsfuck得到提示


unescape解码后js再次解密得到js代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function zhegejiamiyidiandoubuku() {
var pass = document.form.passwd.value;
var cry = "Rm9yM0re354v5E4FUg5FasDboooo==";
var addr = 'soroki.php?passwd=';
var locatie = location.href;
var out = '';
var pass2 = cry.substring(15, 4 * 4) + cry.substring(24, 5 * 5) + cry.substring(0, 1) + cry.substr(7, 1) + cry.substr(11, 1) + cry.substr(13, 1) + cry.substring(3 + 3, 7);
pass = locatie.substr(locatie.indexOf('?') + 1);
addr = addr.substring(0, addr.indexOf('?') + 1) + 'l0vau=';
for (i = 0; i < pass.Len; i++) {
if (pass.charAt(i) == pass2.charAt(i)) {
document.write(pass.charAt(i))
}
}
location = addr + pass
}

分析后访问url/soroki.php?l0vau=FoRevEr得到base64值,解码后得到:zqc{fkqtl_fp_yfd_py}
尝试凯撒移位得到flag,格式ctf{}

RSANG(Asis CTF 2013)

不会
参考1:Asis CTF 2013: “RSAng”
参考2:西普CTF-RSANG(Asis CTF 2013)

唯密文攻击

解题思路:唯密文攻击–实验吧详细解

base??

所有字母都变成大写的,需要循环大小写,base64解码后校验哈希值

1
2
3
4
5
6
7
8
9
10
11
12
from base64 import b64decode
from hashlib import md5
from itertools import product


List = product(['Y','y'],['M','m'],['F','f'],['Z','z'],['Z','z'],['T','t'],['Y','y'],['0'],['D','d'],['3'],['R','r'],['M','m'],['D','d'],['3'],['R','r'],['M','m'],['M','m'],['T','t'],['I','i'],['Z','z'])
for i in List:
Str = ''.join(i)
# print(Str)
Md5 = md5(b64decode(Str)).hexdigest() #计算哈希
if Md5 == '16478a151bdd41335dcd69b270f6b985': #对比
print('flag:' + str(b64decode(Str),encoding='utf-8'))

非常规解

链接:https://somd5.com/

js

js解密->unicode转中文后得到flag
这里需要注意打开题目链接后复制源代码内的内容,而不是网页内的内容(坑死我了.jpg)

RSA

参考:http://hebin.me/2017/09/07/%E8%A5%BF%E6%99%AEctf-rsa/
python2脚本,先提取出n和e

1
2
3
4
5
6
7
8
9
from Crypto.PublicKey import RSA

pub = RSA.importKey(open('public.pem').read())
n = long(pub.n)
e = long(pub.e)
print n
print e
# n = 74207624142945242263057035287110983967646020057307828709587969646701361764263
# e = 65537

分解n,得到pq:http://www.factordb.com/index.php

生成私钥

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from Crypto.PublicKey import RSA

keypair = RSA.generate(1024)

keypair.p = 258631601377848992211685134376492365269
keypair.q = 286924040788547268861394901519826758027
keypair.e = 65537

keypair.n = keypair.p * keypair.q
Qn = long((keypair.p-1) * (keypair.q-1))

i = 1
while (True):
x = (Qn * i ) + 1
if (x % keypair.e == 0):
keypair.d = x / keypair.e
break
i += 1

private = open('private.pem','w')
private.write(keypair.exportKey())
private.close()

使用openssl解密文件

1
openssl rsautl -decrypt -in flag.enc -inkey private.pem -out flag.dec

NSCTF crypto200

stegsolve打开,找到二维码,再用QR Research解开二维码得到flag

NSCTF crypto50

AES解密->凯撒解密
AES:https://www.sojson.com/encrypt_aes.html

黑客叔叔(雨袭团)内部交流题(第一季1.0.2)

先将所有密文变成一行,将等等替换成==,其他中文替换成/

1
U2FsdGVkX18vmjE0tvWk69T/B/u9inuiNnM3rBhsu6tXzLhu+iofwuHNHq3YtDKs8ZlYLvSZuUY+mxLRKO7+m254R5YTCW8yzzgD+mGwWfGRgqmPKdD/xA==

TripleDes解密,然后Rabbit解密

黑客叔叔(雨袭团)内部交流题(第一季1.0.1)

先base64解密

1
umfpbljhawrfrmxhz19zmf9megnrmw45x3donhq|01|03|07|+|+1|+3|+7|2+1|2+2|2+6|2+7|2+9|3+0|3+3|3+7|3+8|3+9|?|

一脸懵比,其实后面01代表前面的字符串第一个变成大写,+代表10,2+1代表21

1
UmFpblJhaWRfRmxhZ19zMF9meGNrMW45X3doNHQ

最后加上=号得到flag

simple algorithm

刚开始写出与FAN对应的解密函数,但是发现字符长度不可控制,看了别人的writeup,发现n值有限定范围:0~99,于是生成字典得到flag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#coding:utf-8
#!/usr/bin/python


def FAN(n, m):
i = 0
z = []
s = 0
while n > 0:
if n % 2 != 0:
z.append(2 - (n % 4))
else:
z.append(0)
n = (n - z[i])/2
i = i + 1
z = z[::-1]
l = len(z)
for i in range(0, l):
s += z[i] * m ** (l - 1 - i)
return s

deFAN = {}
for i in range(100):
a = FAN(i,3)
deFAN[a]=i
# print deFAN
r = '2712733801194381163880124319146586498182192151917719248224681364019142438188097307292437016388011943193619457377217328473027324319178428'
b = 0
str1 = ''
while b < len(r):
if int(r[b:b + 4]) in deFAN:
str1 += '%d' % (deFAN[int(r[b:b + 4])])
b += 4
elif int(r[b:b + 3]) in deFAN:
str1 += '%02d' % (deFAN[int(r[b:b + 3])])
b += 3
elif int(r[b:b + 2]) in deFAN:
str1 += '%02d' % (deFAN[int(r[b:b + 2])])
b += 2
elif int(r[b:b + 1]) in deFAN:
str1 += '%02d' % (deFAN[int(r[b:b + 1])])
b += 1


str2 = '%x' % (int(str1))#最后注意bytes与string的转换
print('结果为: ' + str2.decode('hex'))

warmup

先提取n,e

1
2
3
4
5
6
7
8
# python2
from Crypto.PublicKey import RSA

pub = RSA.importKey(open('warmup.pub').read())
n = long(pub.n)
e = long(pub.e)
print n
print e

n特别大,所以分解是不可能分解的,用rsa-wiener-attack得到d
修改RSAwienerHacker.py中的代码↓

python2和3都可以跑,运行得到d

有了d就可以解密了

1
2
3
4
5
6
7
8
9
from binascii import unhexlify

n = 0x367198D6B5614E95813ADD8F22A4717BC72BE1EABD933D1B86944FDB75B8ED230BE62D7D1B69D222095C128C86F82012ECB116191FD9D018A6D02F84DB27BC51A21307DC86F4BF771C691C143E5ABE549B5BD2D6EB1A21FD6270E7E1B48FE0611FBB2E1B0B3524E6F4DE8B4E4A345DA44A13DE825B72608DB6C7C4A40B78266E6C87BBFDEF6B48381D49C4507A58BCD47B76D64B45908B158BD7EBC4DACB0B1CFD6C2C19574F40EB2EFD0E9E10DC7005CAD39BCAF52B9EAC3873368D69031C5E724684A44F068EFD1D3DC096D9B5D6411E58BDEE43E46B99A0D0494B9DB28195AF901AFF130D4A6E203DAD08DA57FA7E40262A5BADB2A323EDA28B44696AB305D
d = 4221909016509078129201801236879446760697885220928506696150646938237440992746683409881141451831939190609743447676525325543963362353923989076199470515758399
c = 0x1e04304936215de8e21965cfca9c245b1a8f38339875d36779c0f123c475bc24d5eef50e7d9ff5830e80c62e8083ec55f27456c80b0ab26546b9aeb8af30e82b650690a2ed7ea407dcd094ab9c9d3d25a93b2140dcebae1814610302896e67f3ae37d108cd029fae6362ea7ac1168974c1a747ec9173799e1107e7a56d783660418ebdf6898d7037cea25867093216c2c702ef3eef71f694a6063f5f0f1179c8a2afe9898ae8dec5bb393cdffa3a52a297cd96d1ea602309ecf47cd009829b44ed3100cf6194510c53c25ca7435f60ce5f4f614cdd2c63756093b848a70aade002d6bc8f316c9e5503f32d39a56193d1d92b697b48f5aa43417631846824b5e86

m = hex(pow(c, d, n)).rstrip("L")
# print(m)
print(str(unhexlify(m[2:]),encoding='utf-8'))

密文 rot13

rot13:在线解密
格式大写

keyboard

1
BHUK,LP TGBNHGYT BHUK,LP UYGBN TGBNHGYT BHUK,LP BHUK,LP TGBNHGYT BHUK,LP TGBNHGYT UYGBN

提示很明显,BHUK,LP按顺序连起来为‘N’,同理得到flag,注意格式大写

一个img文件

参考:一个img文件-实验吧

数码管


图片字符为:HELLO,对表解密,红色共阳极,蓝色共阴极,共阴极二进制值取反

1
2
3
4
5
H -> 89
E -> 86 -> ‭‭10000110‬‬ -> 01111001 -> ‭79‬
L -> C7
L -> C7 -> ‭11000111‬ -> 00111000 -> ‭38‬
O -> C0

古典密码的安全性不高,但仍然十分美妙,请破译下面的密文

1
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

词频分析:https://quipqiup.com/

最近在论证一个问题,到底是先有鸡还是先有蛋

Ijm,lo 3wsdr4 6tghu7
键盘圈

压缩的问题

将16进制字符串用winhex写入文件

可以看到是rar文件,解压需要密码,再次审题看到提示↓,这一段的值为密码

最后计算哈希的前8位sha1值,小写为flag

chinese hacker

下载数据库,用数据库查看器打开看到INXW2ZLPNYZDAMJSMJQWE6I=
直接提交code1得到前半个flag1GetThEFirst
在将值INXW2ZLPNYZDAMJSMJQWE6I=base32解码得到Comeon2012baby
提交得到后半个flag2tHEWinNer

这里没有key

查看源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
<head>
<title>大家好</title>
<meta http-equiv="Content-Type" content="text/html; charset=Utf-8" />
</head>
<body>
<br>
<br>
<center>
<script>
alert("这里没有key");
</script>
</center>
</body>
</html>

<!-- #@~^TgAAAA=='[6*liLa6++p'aXvfiLaa6i[[avWi[[a*p[[6*!I'[6cp'aXvXILa6fp[:6+Wp[:XvWi[[6+XivRIAAA==^#~@ -->

asp解码后html解码得到flag

Encode@decode

敌军情报

知彼知己方能百战不殆。天枢战队成员截获了一条命令密文45 46 45 46 32 45 32 46 46 45 46 32 46 45 32,你能解密成明文,做到知己知彼吗?
格式:CTF{ }

1
2
3
4
5
6
7
8
45 46 45 46 32 45 32 46 46 45 46 32 46 45 32
ascii,32为空格
- . - . - . . - . . -
根据莫斯密码表
- . - . C
- T
. . - . F
. - A