密码
文章平均质量分 60
ctf密码
Paintrain
一个小菜鸡
展开
-
强网杯2022 crypto 复现
题目出的刚刚好刚好我不会刚好别人都会。原创 2022-08-02 17:21:42 · 1088 阅读 · 1 评论 -
CRYPTO CTF 2022 MEDIUM-EASY
慢慢更新~原创 2022-07-28 10:27:08 · 777 阅读 · 5 评论 -
流密码:RC4
RC4是经典流密码之一,由于加密和解密使用相同的密钥,所以也是对称密码的一种。由于RC4存在弱点,现已禁止在TLS中使用RC4加解密算法。RC4会根据明文长度将密钥扩展到与明文相同的长度,并遵从逐个字节加密的原则。加密的原理是异或。RC4包含两个算法1.密钥调度算法(KSA)2.伪随机数生成算法(PRGA)...原创 2022-07-27 14:53:34 · 1306 阅读 · 0 评论 -
流密码:线性同余生成器 LCG
在介绍流密码之前,我们先引入OTP(One-timePassword,一次性密码)这样一个概念。所谓一次性密码,是一次加密使用一次密钥,这次加密过程中使用的密钥不能在下一次加密中继续使用,密钥是一次性的,使用一次当即作废。例如我们想加密abcdefg这串字符。想要加密所有明文,就要用与明文等长的密钥来加密。比如利用密钥1234567加密,1代表在字母表的顺序向后移动一位,2代表移动2位,等等,和凯撒的原理相同,只不过这里使用了多个密钥。...原创 2022-07-27 09:35:13 · 1325 阅读 · 0 评论 -
DASCTF2022 7月赋能赛 crypto wp
考察的是ecdsa的加密算法。打算在后续写一个博客,把我目前学到的所有公钥和对称的密码算法全部写进去,用来复习,到时候写完了会把链接贴在这里。所以这里原理不过多介绍,详情可以看一下我做题时看的博客:https://blog.csdn.net/qq_51999772/article/details/122626382可以看到给出了随机数k,根据公式可以把da求出来,相当于得到了私钥。而私钥就是flagezNTRUNTRU公钥密码系统,这个题出的是真离谱,又是那个熟悉的爆破大法上面那么多代码不看原创 2022-07-25 21:46:07 · 1515 阅读 · 0 评论 -
CRYPTO CTF 2022 easy
慢慢更新~原创 2022-07-23 22:34:57 · 321 阅读 · 0 评论 -
CRYPTO CTF 2021 MEDIUM
慢慢更新我发现,在做cryptoctf的过程中,能学到好多有趣的知识,也能学到好多sagemath的新姿势~原创 2022-07-23 22:11:11 · 229 阅读 · 0 评论 -
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 · 765 阅读 · 0 评论 -
CRYPTO CTF2021 MEIDUM-EASY
我一定要吐槽一下,这道题做的时候复制的时候出现了一点小问题,n被改动了一个数字,鬼知道为什么会有一个数字的改动!我们知道flag的对应字节在某一行,剩下的就全靠爆破了,模拟加密流程,爆破出所有可见字符的密文,在实际密文列表中存在的则为flag对应位置的字符。首先,这里有个幌子,tranpose返回的是一个新列表,和W就没有关系了,shuffle打乱的是新列表,也就是说这一行对我们的结果没有影响。V构造了一个关于hyper的矩阵,前面的【0】*i导致hyper中含有flag的字符出现的位置固定,例如。...原创 2022-07-19 20:30:18 · 301 阅读 · 0 评论 -
CRYPTO CTF 2021 easy
参加了今年的CRYPTOCTF2022,直接啥也不会,出了好多数学类的题目,但我是真的不会,想着确实挺有意思也值得学习一下,决定刷一下历届CRYPTOCTF的题目,毕竟选择了这个方向,如此出名的赛事不做一做也不太合适。输入g可以得到enflag,输入t再输入长度为32的字符串可以得到该字符串的加密内容,特殊的是加密后会给你enc的一部分和key[-2],我的想法是爆破key的后两位,解密enflag,但是发现没有iv。这道题本来需要nc连过去解题的,可惜现在环境已经关了,自己跑了一下试试。.........原创 2022-07-17 17:32:09 · 1167 阅读 · 0 评论 -
Backpack Cryptography【背包密码】
背包密码的原理由背包问题引申而来,令a为明文二进制序列,x为公钥,这样便构成了一个不错的密码体系。背包问题正是利用了这个原理,但是我们希望它作为公钥密码体系,可以进行信息的加密交流,所以我们还需要一个公钥。现在我们有n个物品,每个物品都有一定的质量,背包承重是W,问哪些物品放到书包里恰好可以把这个书包装满。想要找到恰好装满背包的物品集,我们需要枚举由a可能构成的所有集合,复杂度为。已知公钥和密文,代码并没有什么问题,考察的就是背包密码的破解。2=2,所以2在背包中,2-2=0....原创 2022-07-15 01:07:32 · 1905 阅读 · 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 · 2810 阅读 · 0 评论 -
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 · 339 阅读 · 0 评论 -
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 · 198 阅读 · 0 评论 -
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 · 1144 阅读 · 1 评论 -
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 · 539 阅读 · 0 评论 -
[羊城杯 2020]Simple extend wiener attack
扩展维纳攻击 Extending wiener attack原创 2022-07-07 21:13:29 · 586 阅读 · 0 评论 -
[NPUCTF2020]Mersenne twister 已知明文推测随机数seed
[NPUCTF2020]Mersenne twister 已知明文推测随机数seed伪随机数算法原创 2022-07-04 13:41:06 · 436 阅读 · 0 评论 -
[羊城杯 2020]GMC 关于二次剩余
ctf crypto 有关二次剩余例题原创 2022-07-03 13:47:21 · 527 阅读 · 0 评论 -
[watevrCTF 2019]Crypto over the intrawebs Z3求解方程式
[watevrCTF 2019]Crypto over the intrawebs原创 2022-07-02 20:40:48 · 222 阅读 · 0 评论 -
[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 · 237 阅读 · 0 评论 -
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 · 1345 阅读 · 1 评论 -
[GKCTF 2021]XOR
GKCTF2021 XOR原创 2022-06-28 12:09:07 · 480 阅读 · 0 评论 -
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 · 921 阅读 · 0 评论 -
ctfshow 密码挑战(上)
由于题目有点小难,老攒着不发我很难受,拆成上下两篇 我真聪明目录真·BeginnerLousy RSANot That Right Useso Damn big e?Hammingway给出了m原创 2022-06-19 16:16:15 · 16065 阅读 · 0 评论 -
CTFshow crypto wp
今天开始我的ctf crypto生涯了,之后会陆续从各大平台找一些密码的题目来做,先从萌新杯入手!说明一下,懒得调整字体啥的~~签到题:佬说了,Ao(mg就是flag用base85编码之后的表示形式,在这里可以从网站上直接base85解码,也可用python中的base64库解码,但解码的时候遇到一个有趣的问题import base64a="Ao(mgHX^E)AN2PSBOu3qI0o"a=base64.b85decode(a)print(a)#b' \xf9,96"\xaa\x原创 2022-01-11 16:08:56 · 1067 阅读 · 1 评论 -
ctfshow 月饼杯 crypto2_月自圆
def encrypt(m, a, si): c="" for i in range(len(m)): c+=hex(((ord(m[i])) * a + ord(next(si))) % 128)[2:].zfill(2) return c if __name__ == "__main__": m = '****************************************************flag{*************}' assert(len(m)==71).原创 2022-01-16 16:49:21 · 2555 阅读 · 0 评论 -
ctfshow crypto 红包四wp
from secrets import randbelowfrom nationalsecret import p, r, k, flagg = 2y = pow(g, k, p)def gogogo(): print("Another chance:") t = int(input('t = ')) c = randbelow(p) print("Here is my real challenge:") print(f'c = {c}') pr.原创 2022-01-16 18:19:36 · 696 阅读 · 0 评论 -
ctfshow RSA篇
无脑爆破的就不往上发了,虽然有绝大多数的题都可以无脑爆破crypto easyrsa2n1,n2不同,考虑模不互素的情况,由于n1,n2不互素,那么必然有一个公因数,由于n是由两个质数相乘得到的,所以只有两个因数,那他们的公因数设为p,则q1=n1//p, q2=n2//p,求解m就好了。crypto easyrsa3考虑共模攻击(前提是m和n相同,c和e不同),由于c1 = m^e1 % n ……1c2 = m^e2 % n ……2由拓展欧几里得定理可以得到e1*s1+e2*s原创 2022-01-17 10:44:06 · 984 阅读 · 2 评论 -
ctfshow crypto funnyrsa3 RSA之dp泄露
给出了n,c,e,dp,我们可以借助这些来求解pq网上看了不少wp,对于有关dp的推导总感觉写的不是非常透彻,自己动手写一下,有助于理解。一开始我以为dp的意思是d*p,那样n=p*q,求n/d*p就等于p*q/d*p=q/d,用fractions函数里的Fraction理论上就能把q和d求出来,但是做不出来,网上查了wp发现原来dp的意思是dp=d%(p-1)好家伙,根据这个式子可以往下推导(纯纯的数学运算了):变换一下得到 在rsa中定义 所以变换得到我.原创 2022-01-17 14:49:30 · 1560 阅读 · 2 评论 -
ctfshow funnyrsa1 e与phi不互素
在网上找了一上午,看了好几个人的wp,资源不多,结合了好多人的内容总算梳理明白了#第一段e1 = 14606334023791426p1 = 121009772735460235364940622989433807619211926015494087453674747614331295040063679722422298286549493698150690694965106103822315378461970129912436074962111424616439032849788953648286原创 2022-01-19 15:12:53 · 2563 阅读 · 5 评论 -
[NCTF2019]babyRSA
这道题虽然说是babyrsa,并不难,但是还是学了不少东西,理解更深了一步之前一直不知道rsa中n是1024位还是2048位这个位到底指的是什么,也没有用到过,已知模棱两可,知道今天可算是知道了from Crypto.Util.number import *from flag import flagdef nextPrime(n): n += 2 if n & 1 else 1 while not isPrime(n): n += 2 retu原创 2022-01-25 15:02:30 · 4820 阅读 · 0 评论 -
rsa威尔逊定理相关
# -*- coding:utf-8 -*-#Author: Lazzarofrom Crypto.Util.number import getPrime,isPrimefrom math import gammaimport randomdef nextPrime(n): n += 2 if n & 1 else 1 while not isPrime(n): n += 2 return ndef getNewPrime(): ...原创 2022-01-26 10:02:54 · 638 阅读 · 0 评论 -
[NCTF2019]Reverse(des已知一轮的子密钥)
import osimport pyDesflag = "NCTF{******************************************}"key = os.urandom(8)d = pyDes.des(key)cipher = d.encrypt(flag.encode())with open('cipher', 'wb') as f: f.write(cipher)# Leak: d.Kn[10] == [0, 1, 0, 0, 0, 1, 0...原创 2022-04-16 21:41:34 · 391 阅读 · 0 评论 -
buuctf LeftOrRight
源码:#!/usr/bin/env python3from math import gcdfrom functools import reducefrom fractions import Fraction as FracN = 6def read_num(prompt): try: num = int(input(prompt)) except: return 0 return num if num > 0 else 0原创 2022-04-16 22:13:45 · 647 阅读 · 0 评论 -
[羊城杯 2020]Power(dp泄露与同余性质)
源码:from Crypto.Util.number import *import gmpy2from secret import flagp = getPrime(512)q = getPrime(512)n = p**4*qe = 0x10001phi = gmpy2.lcm(p - 1, q - 1)d = gmpy2.invert(e, phi)dp = d % (p - 1)m = bytes_to_long(flag)c = pow(m, e, n)print原创 2022-04-17 20:26:06 · 608 阅读 · 1 评论 -
[AFCTF2018]一道有趣的题目
题目源码:#加密代码def encrypt(plainText): space = 10 cipherText = "" for i in range(len(plainText)): if i + space < len(plainText) - 1: cipherText += chr(ord(plainText[i]) ^ ord(plainText[i + space])) else:原创 2022-04-17 22:03:49 · 506 阅读 · 0 评论 -
【zer0pts CTF 2022】 Anti-Fermat(p、q生成不当)
题目源码from Crypto.Util.number import isPrime, getStrongPrimefrom gmpy import next_primefrom secret import flag# Anti-Fermat Key Generationp = getStrongPrime(1024)q = next_prime(p ^ ((1<<1024)-1))n = p * qe = 65537# Encryptionm = int.from_原创 2022-04-18 19:30:14 · 1664 阅读 · 0 评论 -
*CTF 2022 easyRSA
源码:from Crypto.Util.number import getStrongPrimefrom gmpy import next_primefrom random import getrandbitsfrom flag import flagp=getStrongPrime(1024)q=next_prime(p^((1<<900)-1)^getrandbits(300))n=p*qe=65537m=int(flag.encode('hex'),16)ass原创 2022-04-18 21:58:39 · 1460 阅读 · 10 评论 -
伪随机数生成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 · 410 阅读 · 0 评论