ctf--crypto(持续更新)

**持续更新**
基础视频
链接: https://pan.baidu.com/s/1eX42AbnJoLdXpbCbz9PV8A
密码: w2ic
链接: https://pan.baidu.com/s/18xtAME2ZTuXP31lSqMfiNA
密码: hq3w

工具

离线
CTFCrackTools
burpsuite
在线
ctf在线工具
ctfhub

密码学基础

密码学发展史

古典密码

1.凯撒加密
2.rot13加密(特殊凯撒加密key=13)
2.playfair加密
3.维吉尼亚加密(古典唯一需要密钥)
4.栅栏加密
6.培根加密(全都是由a,b组成)
7.猪圈加密(特殊图形组成)
8.卡尔达诺兰格码

现代密码

一.对称加密
DES
3DES (DES加密3次)
Blowfish
AES (取代DES算法)
IDEA
RC4
RC5
RC6

二.非对称加密
1.rsa
rsa数学基础
rsa加密
ctf中rsa的套路

编码

1.ascii
2.base64
3.url
4.html
5.unicode
6.utf-8
7.摩斯电码 (.和-组成)
8.二维码
9.jother (由[]{}()+!组成,浏览器console解码)
10.jsfuck (由()[]+!组成)

摘要

md5
sha1

其他

键盘加密(按照给定字符序列在键盘上顺序连接组成图形)

数学基础

威尔逊定理
欧拉定理

例题应用

1.(吉林大学ctf社团2020比赛)

#baby math 
from math import factorial
from badmonkey import flag 
p = 6754809195983416889371518438404230464318771258362527973287334033265667200119099459184180646680169474847824019197256829826149222241090098845978570412659797 
def my_wilson(x,p): 
    return factorial(x)%p 
res = my_wilson(p-2333,p) 
mid = md5(str(res).encode()).hexdigest() 
assert mid == "a3fe2bd4fb7c2f3642d57d67967c649b" 
print("Spirit{{{}}}".format(res%(2**100)))

2.(吉林大学ctf社团2020比赛)

# python3 
from badmonkey import flag 
message = bytes_to_long(flag) 
enc = message ^ message>>23 
print("enc = ",enc) 
# enc = 696190889020604856890193198853561201348825165171326836202150445122902404137656377702109518236445

3.(吉林大学ctf社团2020比赛)

from Crypto.Util.number import * 
from badmonkey import flag 
m = bytes_to_long(flag) 
BITS = m.bit_length() 
a,b,c,d = 15,27,19,23 
mask1 = 3698415493855604199601451107484163420720646551661606649093806737041154400431942060340531696401 
mask2 = 3460949362284136053271491912952156811286686375965162899233783178191434976143378804364416056910 
def encrypt(y): 
    y = y ^ y >> a 
    y = y ^ y << b & mask1 
    y = y ^ y << c & mask2 
    y = y ^ y >> d 
    return y&((2<<BITS)-1) 
enc = encrypt(m) 
print("enc = ",enc) 
# enc = 1050202800288756594888207862919284086044293654918425636192291797436341243157293011540594049798

4.lcg-5(lcg系列)

from Crypto.Util.number import *
flag = b'Spirit{****************************************}'

plaintext = bytes_to_long(flag)
length = plaintext.bit_length()

a = getPrime(length)
b = getPrime(length)
n = getPrime(length)

seed = plaintext
output = []
for i in range(10):
    seed = (a*seed+b)%n
    output.append(seed)

print("output = ",output)
# output =  [9997297986272510947766344959498975323136012075787120721424325775003840341552673589487134830298427997676238039214108, 4943092972488023184271739094993470430272327679424224016751930100362045115374960494124801675393555642497051610643836, 6774612894247319645272578624765063875876643849415903973872536662648051668240882405640569448229188596797636795502471, 9334780454901460926052785252362305555845335155501888087843525321238695716687151256717815518958670595053951084051571, 2615136943375677027346821049033296095071476608523371102901038444464314877549948107134114941301290458464611872942706, 11755491858586722647182265446253701221615594136571038555321378377363341368427070357031882725576677912630050307145062, 7752070270905673490804344757589080653234375679657568428025599872155387643476306575613147681330227562712490805492345, 8402957532602451691327737154745340793606649602871190615837661809359377788072256203797817090151599031273142680590748, 2802440081918604590502596146113670094262600952020687184659605307695151120589816943051322503094363578916773414004662, 5627226318035765837286789021891141596394835871645925685252241680021740265826179768429792645576780380635014113687982]

所有题的答案

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值