BUUCTF 每日打卡 2021-4-13
引言
又是昏昏沉沉的一天
密码学的心声
题目描述如下: 附件内容:
从歌词可知,这是八进制加密,要用 ascii 码解密 尝试把全部内容八进制转十进制解密:
1 | from Crypto.Util.number import * |
结果为:b'92a)99LgS8y+19NG92i6h' ??? 参考wp后得知要三个数字一组八进制转十进制解密 代码如下: 1
2
3
4
5
6c = '111114157166145123145143165162151164171126145162171115165143150'
list_c = []
for i in range(0, len(c), 3):
list_c.append(chr(int(c[i:i+3], 8)))
m = ''
print('flag{' + m.join(list_c) + '}')
rot
附件内容: 1
2
3破解下面的密文:
83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 110 127 108 112 124 122 108 118 128 108 131 114 127 134 108 116 124 124 113 108 76 76 76 76 138 23 90 81 66 71 64 69 114 65 112 64 66 63 69 61 70 114 62 66 61 62 69 67 70 63 61 110 110 112 64 68 62 70 61 112 111 112
flag格式flag{}1
2
3
4
5
6
7
8
9
10
11c = '83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 110 127 108 112 124 122 108 118 128 108 131 114 127 134 108 116 124 124 113 108 76 76 76 76 138 23 90 81 66 71 64 69 114 65 112 64 66 63 69 61 70 114 62 66 61 62 69 67 70 63 61 110 110 112 64 68 62 70 61 112 111 112'
list_c = c.split(' ')
print(list_c)
k = list_c[0]
list_m = []
for i in range(len(list_c)):
list_c[i] = chr(int(list_c[i]) + ord('f') - int(k))
list_m.append(ord(list_c[i]))
print(list_m)
m = ''
print(m.join(list_c))
flag is '一串乱码' ____ '一串乱码' 盯着这串字符琢磨了半天 最后求助wp,但是只告诉我们会得到一串带 "?" 的 flag,和一串 MD5 具体怎么得到的讲的很含糊 后来受 dl 指点,尝试将前四位向大写的 “FLAG” 移位 代码如下: 1
2
3
4
5
6
7
8
9
10
11c = '83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 110 127 108 112 124 122 108 118 128 108 131 114 127 134 108 116 124 124 113 108 76 76 76 76 138 23 90 81 66 71 64 69 114 65 112 64 66 63 69 61 70 114 62 66 61 62 69 67 70 63 61 110 110 112 64 68 62 70 61 112 111 112'
list_c = c.split(' ')
print(list_c)
k = list_c[0]
list_m = []
for i in range(len(list_c)):
list_c[i] = chr(int(list_c[i]) + ord('F') - int(k))
list_m.append(ord(list_c[i]))
print(list_m)
m = ''
print(m.join(list_c)) 啊这(这也在你的计算之中吗?出题人)
容易想到要用哈希碰撞 代码如下: 1
2
3
4
5
6
7
8
9
10flag = 'flag{www_shiyanbar_com_is_very_good_????}'
md_5 = '38e4c352809e150186920aac37190cbc'
for i in range(33, 127):
for j in range(33, 127):
for s in range(33, 127):
for t in range(33, 127):
k = flag.replace('????', chr(i) + chr(j) + chr(s) + chr(t))
x = hashlib.md5(k.encode()).hexdigest()
if x == md_5:
print(k)
结语
晚上还有机器学习 溜了溜了 希望继续坚持