自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 强网杯2022 crypto 复现

题目出的刚刚好刚好我不会刚好别人都会。

2022-08-02 17:21:42 1083 1

原创 CRYPTO CTF 2022 MEDIUM-EASY

慢慢更新~

2022-07-28 10:27:08 773 5

原创 流密码:RC4

RC4是经典流密码之一,由于加密和解密使用相同的密钥,所以也是对称密码的一种。由于RC4存在弱点,现已禁止在TLS中使用RC4加解密算法。RC4会根据明文长度将密钥扩展到与明文相同的长度,并遵从逐个字节加密的原则。加密的原理是异或。RC4包含两个算法1.密钥调度算法(KSA)2.伪随机数生成算法(PRGA)...

2022-07-27 14:53:34 1300

原创 流密码:线性同余生成器 LCG

在介绍流密码之前,我们先引入OTP(One-timePassword,一次性密码)这样一个概念。所谓一次性密码,是一次加密使用一次密钥,这次加密过程中使用的密钥不能在下一次加密中继续使用,密钥是一次性的,使用一次当即作废。例如我们想加密abcdefg这串字符。想要加密所有明文,就要用与明文等长的密钥来加密。比如利用密钥1234567加密,1代表在字母表的顺序向后移动一位,2代表移动2位,等等,和凯撒的原理相同,只不过这里使用了多个密钥。...

2022-07-27 09:35:13 1319

原创 DASCTF2022 7月赋能赛 crypto wp

考察的是ecdsa的加密算法。打算在后续写一个博客,把我目前学到的所有公钥和对称的密码算法全部写进去,用来复习,到时候写完了会把链接贴在这里。所以这里原理不过多介绍,详情可以看一下我做题时看的博客:https://blog.csdn.net/qq_51999772/article/details/122626382可以看到给出了随机数k,根据公式可以把da求出来,相当于得到了私钥。而私钥就是flagezNTRUNTRU公钥密码系统,这个题出的是真离谱,又是那个熟悉的爆破大法上面那么多代码不看

2022-07-25 21:46:07 1508

原创 CRYPTO CTF 2022 easy

慢慢更新~

2022-07-23 22:34:57 321

原创 CRYPTO CTF 2021 MEDIUM

慢慢更新我发现,在做cryptoctf的过程中,能学到好多有趣的知识,也能学到好多sagemath的新姿势~

2022-07-23 22:11:11 227

原创 NepCTF2022 招新赛 crypto篇

动态更新至全部复现完成还是太菜了,看了wp依然是学到了很多,发现nep的密码师傅们经验也太丰富了!根据加密流程,可以构造等式:P(P(P(P(P(Pm+k0)+k1)+k2)+k3)+k4)+k5=m∗P6+∑Pik5−iP(P(P(P(P(Pm+k0)+k1)+k2)+k3)+k4)+k5=m*P^6+\sum P^ik_{5-i}P(P(P(P(P(Pm+k0)+k1)+k2)+k3)+k4)+k5=m∗P6+∑Pik5−i​已知明文前四个字节 “flag”,和密文,也就是已知一组明密文,利用已知

2022-07-21 20:38:18 763

原创 CRYPTO CTF2021 MEIDUM-EASY

我一定要吐槽一下,这道题做的时候复制的时候出现了一点小问题,n被改动了一个数字,鬼知道为什么会有一个数字的改动!我们知道flag的对应字节在某一行,剩下的就全靠爆破了,模拟加密流程,爆破出所有可见字符的密文,在实际密文列表中存在的则为flag对应位置的字符。首先,这里有个幌子,tranpose返回的是一个新列表,和W就没有关系了,shuffle打乱的是新列表,也就是说这一行对我们的结果没有影响。V构造了一个关于hyper的矩阵,前面的【0】*i导致hyper中含有flag的字符出现的位置固定,例如。...

2022-07-19 20:30:18 299

原创 CRYPTO CTF 2021 easy

参加了今年的CRYPTOCTF2022,直接啥也不会,出了好多数学类的题目,但我是真的不会,想着确实挺有意思也值得学习一下,决定刷一下历届CRYPTOCTF的题目,毕竟选择了这个方向,如此出名的赛事不做一做也不太合适。输入g可以得到enflag,输入t再输入长度为32的字符串可以得到该字符串的加密内容,特殊的是加密后会给你enc的一部分和key[-2],我的想法是爆破key的后两位,解密enflag,但是发现没有iv。这道题本来需要nc连过去解题的,可惜现在环境已经关了,自己跑了一下试试。.........

2022-07-17 17:32:09 1165

原创 Backpack Cryptography【背包密码】

背包密码的原理由背包问题引申而来,令a为明文二进制序列,x为公钥,这样便构成了一个不错的密码体系。背包问题正是利用了这个原理,但是我们希望它作为公钥密码体系,可以进行信息的加密交流,所以我们还需要一个公钥。现在我们有n个物品,每个物品都有一定的质量,背包承重是W,问哪些物品放到书包里恰好可以把这个书包装满。想要找到恰好装满背包的物品集,我们需要枚举由a可能构成的所有集合,复杂度为。已知公钥和密文,代码并没有什么问题,考察的就是背包密码的破解。2=2,所以2在背包中,2-2=0....

2022-07-15 01:07:32 1897 2

原创 RSA p+1或p-1光滑

在rsa中,如果p或q生成不当导致p+1或者p-1光滑,则可能会易被攻击参考:ctf wiki 【大数分解】Pollard‘s p-1 method光滑数 (Smooth number):指可以分解为小素数乘积的正整数p-1光滑(Pollard‘s p-1 method):根据费马小定理(Fermat Theorem),若p是素数,且p不整除a,则有:ap−1≡1 (mod p)a^{p-1}\equiv 1~(mod~p)ap−1≡1 (mod p)B-Smooth数:如果一个整

2022-07-14 00:50:27 2775

原创 rabbin算法及其一道古古怪怪的题目

rabbin的加密算法很简单,是rsa的衍生算法,区别在于rabbin算法的公钥是2解密算法与常规rsa有点不同在rsa算法中p为任意素数q为任意素数phi=(p-1)*(q-1)而p-1和q-1都是偶数,所以相乘是偶数,即2的倍数,此时利用e的模逆求d是不现实的,只能直接对c进行有限域n下的开平方运算但n不是个素数,很难找到它的平方剩余于是我们把式子分解一下c≡m2 (mod n)分解为c≡m2 (mod p)c≡m2 (mod q)c\equiv m^2~(mod~n)\newline分

2022-07-13 19:18:28 337

原创 BlueHat 2022 corrupted_key

根据priv.pem可以提出n、e、dq的低120位和u已知n、e、dq可以构造如下方程:dq=d%(q−1) (mod 2120)dq=d\%(q-1)~(mod~2^{120})dq=d%(q−1) (mod 2120)可以得到 dq

2022-07-13 12:15:49 197

原创 ACTF2022 rsa leak

之前是不想写这个wp的,但是这两天突然想起来这道题发现没有留exp,怕下次遇到,浅记一下首先对于leak(rp,rq),可以通过某种手段,来找到rp和rqn很小可以直接分解首先是打表爆破:得到rp=405771rq=11974933网上学到了一种新方法 中间相遇攻击哇塞这个不就是打表爆破吗,还以为能学到新东西!!?知道rp和rq后,可以参考论文 A New Attack on Special-Structed RSA Primes伪代码:复现:下面给出不用论文的wp:每次复现论文

2022-07-12 22:02:36 1136 1

原创 XCTF re1-100

xctf re

2022-07-12 12:31:44 132

原创 XCTF Newbie_calculations

XCTF re

2022-07-12 12:10:19 133

原创 vsCTF crypto 部分wp

最近比赛太多了,要不是有人提醒我我已经忘记这个比赛了,但我知道的时候已经是晚上了QAQ,匆匆忙忙就做了两道题加密代码主要又两段:第一段第二段exp:Baby RSA通过pubkey导出e和n,n 很小可以直接分解尝试求d的时候发现e没有phi的逆元,检查发现e是phi的因子参考NCTF2019的easyRSA[909pt 2solvers]第一次出这个题只有两个解,不得不承认论文确实很难看懂需要涉及到如何在有限域内开r次方根,而AMM算法是一个十分有效的方法。

2022-07-11 09:38:48 537

原创 [羊城杯 2020]Simple extend wiener attack

扩展维纳攻击 Extending wiener attack

2022-07-07 21:13:29 585

原创 [NPUCTF2020]Mersenne twister 已知明文推测随机数seed

[NPUCTF2020]Mersenne twister 已知明文推测随机数seed伪随机数算法

2022-07-04 13:41:06 434

原创 [羊城杯 2020]GMC 关于二次剩余

ctf crypto 有关二次剩余例题

2022-07-03 13:47:21 526

原创 [watevrCTF 2019]Crypto over the intrawebs Z3求解方程式

[watevrCTF 2019]Crypto over the intrawebs

2022-07-02 20:40:48 222

原创 [watevrCTF 2019]Baby RLWE

Mateusz拿着一大罐写有公钥的小文件,但他绊倒了,不小心把它们丢进了扫描仪,并用它们制作了一个txt文件!D: 注意:此挑战只是对RLWE的介绍,标志(标准格式)编码在私钥中。看题目 本题考察点可能是RLWE 参考大佬wp其实这类比较前沿的密码并不会很容易被发现漏洞,所以大部分是出题人自己偏要整活而创造出来的漏洞。在本题中,e是通过small_poly生成出来的多项式,通过尝试发现,从x的103次方到x的0次方中,不断生成的e存在缺失,也就是b(x)=a(x)*s(x)+e(x)当e(x)中的某一

2022-06-30 16:45:04 236

原创 RSA 已知明文低位 可以看作短填充

有人发了一道题,看起来很简单,但我当时确实没做出来,在此记录一下先上exp:一开始想到了coppersmith 攻击,但是在 f=(2^350*x+m)^3-c 这里,并没有给x系数2^350,导致没有求出来,吃一堑长一智,合理的提高效率的方法要牢记。篇幅太短发不出去。。那就多唠两句在f.small_roots中参数beta、epsilon参数的选取相对固定,上面的组合可以解决绝大多数的问题,x的选取主要看f中x 的取值范围,我们要求的是small_roots,最小根,就要封一个上限

2022-06-30 10:45:30 1337 1

原创 [GKCTF 2021]XOR

GKCTF2021 XOR

2022-06-28 12:09:07 480

原创 ctfshow 密码挑战(下)

运用费马小定理因为2**_数有点大运算不出来,我们需要借助一些数学手段来化简一开始没往分解n那里想,好家伙这个n还是可以分解的,分解出来之后求出phi那么这个"2**_"就一定能分解成k*phi+t的形式 "_"这个字符不好看,我们换成e显然t=(2**e)%phi,2**t%n用快速幂就很好求了rsa-rsa-rsa-rsa加密代码很好看懂,重点是 d % (2**1050) 是给出了d的低1050位,看到取余就应该想到给出多少低位,看到取余就应该想到给出低位,看到取余就应该想到给出

2022-06-21 10:20:48 913

原创 ctfshow 密码挑战(上)

由于题目有点小难,老攒着不发我很难受,拆成上下两篇 我真聪明目录真·BeginnerLousy RSANot That Right Useso Damn big e?Hammingway给出了m

2022-06-19 16:16:15 16025

原创 [De1CTF2019]Babylfsr(B-M算法)

参考:ctfwiki根据B-M算法的介绍,我们至少需要知道2n长度的序列,则可以推测出初始化seed题目源码:import hashlibfrom secret import KEY,FLAG,MASKassert(FLAG=="de1ctf{"+hashlib.sha256(hex(KEY)[2:].rstrip('L')).hexdigest()+"}")assert(FLAG[7:11]=='1224')LENGTH = 256assert(KEY.bit_length.

2022-04-25 20:14:18 562

原创 流密码:lfsr(线性反馈移位寄存器)

参考文献:ctf竞赛密码学之lfsrctfwiki crpto lfsr(线性反馈移位寄存器)简单认识一下lfsrlfsr可以直接看作下面这个公式,对于我来说还是公式比较好理解,网上很多题解直接对于lfsr函数进行分析,还是没有公式来的舒服(实际上是我看不懂他们的wp)BM算法如果我们知道了长度为 2n 的序列,我们也可以一种比较笨的方法来获取原先的序列。2018 强网杯 streamgame1from flag import flagassert fl...

2022-04-24 14:34:51 3180

原创 BUUCTF-CRYPTO-强网杯2019 Copperstudy

coppersmith基础很全面了第一题:利用kali的hashcat:hashcat -a 3 --hex-salt -m 1420 e96ccab8a20768b1a4ed29cb8127a35c9c0042f585d32eb357fa5c2b8b6a2e29:52dc4554e6 ?b?b?b --force --show第二题 已知m高位第三题 已知p高位第四题 已知d低位第五题 广播攻击第六题 短填充攻击第七题 Boneh and Durfee attack

2022-04-23 20:52:25 801

原创 [BSidesSF2020]decrypto-2

和1类似,svg的格式泄露明文小计一下吧没怎么看懂s=b'<?xml version="1.0" encoding="UTF-8" standalone="no"?>'f=open('flag.svg.enc','rb').read()import hashlibimport structsha0=bytes()x1=bytes(a^b for a,b in zip(s[:32],f[:32]))sha0+=x1temp=1for i in range(200):

2022-04-22 11:10:47 247

原创 [BSidesSF2020]decrypto-1

源码:import sysimport jsonimport hashlibclass Crypto: def __init__(self, key): if not isinstance(key, bytes): raise TypeError('key must be of type bytes!') self.key = key self._buf = bytes() self._out

2022-04-22 10:26:14 230

原创 [UTCTF2020]Curveball(Shamir‘s Secret Sharing)

(C81E728D9D4C2F636F067F89CC14862C, 31E96A93BF1A7CE1872A3CCDA6E07F86)(ECCBC87E4B5CE2FE28308FD9F2A7BAF3, ADF6E4F1052BDE978344743CCDCF5771)(E4DA3B7FBBCE2345D7772B0674A318D5, 0668FBCFE4098FEA0218163AC21E6531)shamir密钥分享,已知三组数据,md5解密后:(2,5398141)(3,539.

2022-04-21 22:04:02 444

原创 [Zer0pts2020]ROR

源码:import randomfrom secret import flagror = lambda x, l, b: (x >> l) | ((x & ((1<<l)-1)) << (b-l))N = 1for base in [2, 3, 7]: N *= pow(base, random.randint(123, 456))e = random.randint(271828, 314159)m = int.from_byte

2022-04-21 20:44:11 366

原创 [CISCN2018]oldstreamgame

assert flag.startswith("flag{")assert flag.endswith("}")assert len(flag)==14def lfsr(R,mask): output = (R << 1) & 0xffffffff i=(R&mask)&0xffffffff lastbit=0 while i!=0: lastbit^=(i&1) i=i>>1.

2022-04-21 19:14:33 276

原创 [BSidesSF2019]slashslash(openssl的使用)

直接使用openssl工具进行解密 openssl的使用如果你的openssl在1.1.0版本甚至更高,记得确保加上-m md5进行指定摘要算法

2022-04-21 16:47:38 151

原创 [CISCN2018]sm

源码:这道题目的是求chooser是根据choose的二进制位来选择异或ps,那么就可以找出异或了哪些ps来推断choose的状态又因为ps从1-512位的都有,我们对r进行与加密相反的操作,倒着开始异或,一遇到r的最后一位是1的情况就根据ps的状态让choose在同位上为1,其他都为0decrypt:这是个笨方法,网上找wp竟然有人用矩阵解,线代这种东西上学期学完之后就没再见过,学到了学到了ps之间的异或可以看作模2下的加法因此设ps为矩阵A,r为矩阵B,choose为矩阵C,则C*A=B,所

2022-04-20 23:25:06 257

原创 [GUET-CTF2019]Uncle Sam(Schmidt-Samoa 密码体系)

学到了学到了,新的密码体系可恶的是某一个点竟然看了一晚上没看出来,看完wp突然发现我自己都写出来还没看出来,很气愤!题目源码:import gmpy2from Crypto.Util.number import *def generkey(k): p, q = getPrime(k), getPrime(k) pubkey = p**2 * q n = pubkey l = (p-1)*(q-1) privkey = inverse(n, l) return pubkey,

2022-04-19 23:13:26 398

原创 [GKCTF 2021]Random(MT19973随机数破解)

由此而已发现,如果生成64位随机数,那么会先生成一个32位随机数a,然后再生成一个32位随机数b,将b左移32位去加上a,得到一个64位的随机数。我们把64位和96位的随机数拆分成32位,按顺序存入randcrack内,randcrack能帮我们处理并破解MersenneTwister(梅森旋转算法)MT算法能生成1-623个32位随机数,而我们有(32/32+64/32+96/32)*104=624个已知随机数,那么我们就完全可以求出下一个随机数。要求去求生成104组随机数之后的下一个随机数。...

2022-04-19 17:18:27 4009

原创 伪随机数生成MT19937

生成算法:#! coding: utf-8class MersenneTwister: __n = 624 __m = 397 __a = 0x9908b0df __b = 0x9d2c5680 __c = 0xefc60000 __kInitOperand = 0x6c078965 __kMaxBits = 0xffffffff __kUpperBits = 0x80000000 __kLowerBits = 0x7ffff

2022-04-19 16:26:25 408

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除