第一次写CTF相关wp记录,主要是总结归纳我觉得比较好的题目的wp(可能是自己写也可能是转载的。)
2020、11、7
crypto之幂数加密
幂数加密(云影密码):http://www.mamicode.com/info-detail-3075795.html
另解:
a=["88421","0122","048","02244","04","0142242","0248","0122"]
flag=""
for j in range(0,len(a)):
str = a[j]
list=[]
sum=0
for i in str:
list.append(i)
length = len(list)
for i in range(0,length):
sum+=int(list[i])
flag+=chr(64+sum)
print(flag)
2020、11、8
crypto之easychallenge
非常详细的WP:https://blog.csdn.net/hippotomons/article/details/102538110
ps:^为异或,其逆过程就是再做一次异或。
【原理】
pyc反编译
【目的】
掌握pyc反编译的方法以及阅读python代码的能力
【环境】
Windows
【工具】
python
【步骤】
本题是一个很简单的异或加密
反编译可以使用uncompyle6或者在线反编译pyc
安装uncompyle6,pip install uncompyle6
反编译命令 uncompyle6 crypto11.pyc,得到:UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E===
我们通过反顺序异或来反编译出flag
import base64
s="UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==="注意,这里是三个等号,所以判断为base32编码
s=base64.b32decode(s)
m = ‘’
for i in s:
x = ord(i) ^ 36
x = x - 36
m+= chr(x)
h = ‘’
for i in m:
x = ord(i) - 25
x = x ^ 36
h+= chr(x)
print h
转轮机加密
WP: https://blog.csdn.net/rashu99/article/details/108736599
轮机密码介绍
【原理】
转轮机密码
【目的】
掌握转轮机密码编码以及解码方式
【环境】
Windows
【工具】
在线解密
【步骤】
懂了加密原理一切就变得容易起来了,我们可以写一个python脚本来解决这个问题.
import re
sss=’’‘1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE < 2: < KPBELNACZDTRXMJQOYHGVSFUWI < 3: < BDMAIZVRNSJUWFHTEQGYXPLOCK < 4: < RPLNDVHGFCUKTEBSXQYIZMJWAO < 5: < IHFRLABEUOTSGJVDKCPMNZQWXY < 6: < AMKGHIWPNYCJBFZDRUSLOQXVET < 7: < GWTHSPYBXIZULVKMRAFDCEONJQ < 8: < NOZUTWDCVRJLXKISEFAPMYGHBQ < 9: < XPLTDSRFHENYVUBMCQWAOIKZGJ < 10: < UDNAJFBOWTGVRSCZQKELMXYIHP < 11 < MNBVCXZQWERTPOIUYALSKDJFHG < 12 < LVNCMXZPQOWEIURYTASBKJDFHG < 13 < JZQAWSXCDERFVBGTYHNUMKILOP <
‘’’
m=“NFQKSEVOQOFNP”
content=re.findall(r’< (.*?) <’,sss,re.S)
iv=[2,3,7,5,13,12,9,1,8,10,4,11,6]
vvv=[]
ans=""
for i in range(13):
index=content[iv[i]-1].index(m[i])
vvv.append(index)
for i in range(0,26):
flag=""
for j in range(13):
flag+=content[iv[j]-1][(vvv[j]+i)%26]
print flag
or 另解:
original_wheel = ['ZWAXJGDLUBVIQHKYPNTCRMOSFE',
'PBELNACZDTRXMJQOYHGVSFUWI',
'BDMAIZVRNSJUWFHTEQGYXPLOCK',
'RPLNDVHGFCUKTEBSXQYIZMJWAO',
'IHFRLABEUOTSGJVDKCPMNZQWXY',
'AMKGHIWPNYCJBFZDRUSLOQXVET',
'GWTHSPYBXIZULVKMRAFDCEONJQ',
'NOZUTWDCVRJLXKISEFAPMYGHBQ',
'XPLTDSRFHENYVUBMCQWAOIKZGJ',
'UDNAJFBOWTGVRSCZQKELMXYIHP',
'MNBVCXZQWERTPOIUYALSKDJFHG',
'LVNCMXZPQOWEIURYTASBKJDFHG',
'JZQAWSXCDERFVBGTYHNUMKILOP ']#所给初始状态的轮转机
shifted_wheel = []
key = [2,3,7,5,13,12,9,1,8,10,4,11,6] #所给密钥
ciphertext = 'NFQKSEVOQOFNP' #所给密文
#按照密钥顺序对轮排序
for i in key:
shifted_wheel.append(original_wheel[i-1])
print('按照密钥重新排序后的轮转机:\n',shifted_wheel)
#按照密文顺序转动轮
for i in range(len(shifted_wheel)):
index = shifted_wheel[i].index(ciphertext[i])
shifted_wheel[i] = shifted_wheel[i][index:]+shifted_wheel[i][0:index]
print('按照密文重新排序后的轮转机:\n',shifted_wheel)
#读取所有恢复的明文
print('输出所有可能的明文:')
for i in range(1,len(shifted_wheel[0])):
for j in range(len(shifted_wheel)):
print(shifted_wheel[j][i],end='')
print('\n')
Normal_RSA
https://blog.csdn.net/hippotomons/article/details/102672851