自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 BUUCTF-Reverse —— 第二页的题目集合

用go语言编写的程序,go语言编写的程序用的是静态链接的方法所以程序都很大,而且反汇编后的伪代码也很麻烦。因为是elf文件,动态调试elf文件的话,可以用IDA连linux虚拟机,也可以使用gdb动调。先简单来说一下这个题目,F5反汇编之后是一大堆代码,但比较明显的是这个函数,而unk_4D3C58里面就存放的是flag。对,这就完事了。接下来使用IDA和GDB来动态调试,在第61行(”if ( v9!= 24 )“)下断点,地址是0x49A400。运行程序,然后内存搜素flag。

2023-07-04 10:43:31 981

原创 BUUCTF-Reverse —— 第一页的题目集合

一般来说,先查看一下字符串,简单的题目会有flag或者敏感数据字符等信息,方便我们定位函数查看字符串的方法为shift+F12。ctrl+x(交叉引用)查看是哪段函数调用了该字符串在IDA中,选中数字按"R"键可以将数字转换为字符。

2023-07-04 10:17:07 1214

原创 DASCTF十月赛

解m1要先求出n_1,n_1的加密为低指数加密,爆破可以得出n_1,yafu分解然后解密c_1。m2部分根据代码有公式{m2=m+t∗kc3=me2mod  n3==>c3=(m2−t∗k)e2mod  n3\begin{cases}m_2 = m + t*k\\c_3 = m^{e_2}\mod n_3\end{cases}==>c_3=(m_2-t*k)^{e_2}\mod n_3{m2​=m+t∗kc3​=me2​modn3​​==>c3​=(m2​−t∗k)e2​modn3​于是在模

2022-10-26 17:10:41 659 1

原创 2022第三届网鼎杯青龙组

crypto405利用好flag的格式进行分析。将前5个grasshopper的产生过程列出公式来,有:i=0时,k_{10}=g_{0}=chr(‘f’)*k_{00}%p\\i=1时,k_{20}=g_{1}=chr(‘l’)*k_{10}%p\\……

2022-08-26 17:23:22 1650 1

原创 [NPUCTF2020]Mersenne twister

而self.state[i] ^ (self.state[i] >> 27)这步操作,只需要再执行一遍就可以求出原来的state[i]。通过这些随机数,写出Next()的逆过程,可以求出相应的generate之后的state。求出了seed之后还有进行判断是否是对的,只需要再执行一遍srand()和generate(),得到的结果跟已知的generate()之后的state[]做对比就行了。而此时我们正好已知state[0]和state[103],于是我们可以猜测state[104]。...

2022-08-13 17:07:34 344

原创 [羊城杯 2020]GMC

分析代码,发现x 的生成涉及到平方剩余。利用雅可比符号可表示为(\dfrac{x}{p})(\dfrac{x}{q})=-1。y_i是模 n 的平方剩余,于是利用雅可比符号的可乘性,上面两个式子是否平方剩余可表示为。羊城杯 2020]GMC题解_mortal15的博客-CSDN博客。根据雅可比的值的不同,推出flag。[羊城杯 2020]GMC。......

2022-08-13 17:06:16 401

原创 [watevrCTF 2019]Crypto over the intrawebs

因为每次发送的消息都有固定头部,所以可以利用这一特征求出 key。利用z3构造多个方程求解。由于^运算的参与,不能使用Int(‘x’),需使用比特流BitVec(‘x’,bit)。由key的生成过程可知 key 最多 76bits。......

2022-08-13 17:05:33 223

原创 [watevrCTF 2019]Baby RLWE

可知 e 的生成运用高斯分布,c 默认为 0,sigm 看样子是极小的( pi 未知),那么生成的系数就会集中在 0 处,也就是说 e 的多项式中的很多项系数都为 0。搜索DiscreteGaussianDistributionPolynomialSampler了解了一下。s 不变,所以可以通过统计多组b,取相应项中出现最多的系数作为该项的系数,由此猜测a。watevrCTF 2019]Baby RLWE_无名函数的博客-CSDN博客。s,从而达到绕过 e 的干扰求 s。...

2022-08-13 17:04:46 200

原创 [De1CTF2019]Babylfsr

题目给出了504bits的output,可惜的是连掩码mask都是未知的。所以首要任务是求出掩码mask。考虑矩阵求解,建立256×256的init矩阵A,以及256×1的output矩阵C,显然需要512bits的output,故尝试遍历后8bits的情况。接下来就是简单的还原过程,通过后生成的255bits的output推出前1bit的output或key。(从阮师傅博客中看到了更简洁的方法😋,之前遇到的是32bits的mask,就直接挑出里面为1的位😂)......

2022-08-13 17:01:50 338 1

原创 crtrsa -- 2021巅峰极客

2021“巅峰极客”网络安全技能挑战赛crtrsa题目:from secret import flagn,p,q#p and q are two primes generated by getPrimeimport randomdef key_gen(): while True: dp = random.randint(1,1<<20) dq = random.randint(1,q-1) if gcd(dp, p - 1) == 1 and gcd(dq, q - 1

2021-10-07 22:29:34 581 3

原创 第五届“强网杯”全国网络安全挑战赛 - 青少年专项赛 crypto

文章目录CryptoCrypto1Crypto2CryptoCrypto1题目:n=967226697499512129137566782343586511841340684078124704344359166031568189175458414397790319438006342500321067641548043099355576785128586300482122046964714877621607449248380107464455109792027351231405365999757311

2021-10-04 11:05:42 3048 1

原创 第四届江西省高校网络安全技能大赛 复现 2021-09-30

文章目录cryptoYusa的密码学课堂—CBC第二课Yusa的密码学课堂—CBC第三课Misc奇奇怪怪的编码extractallcryptoYusa的密码学课堂—CBC第二课题目:from Crypto.Cipher import AESimport osflag='DASCTF{********************************}'BLOCKSIZE = 16def pad(data): pad_len = BLOCKSIZE - (len(data)

2021-10-01 16:02:47 5643 3

原创 [SUCTF2019]MT 2021/9/23

复现了几道题,发现不怎么会,差不多忘光了。唉!找到能稍微动的了手的题目好像都是异或,移位的,但过程又非常复杂。东看西看,看了一篇文章(虽然看的不是很懂):梅森旋转算法—MT[SUCTF2019]MT题目:from Crypto.Random import randomfrom Crypto.Util import numberfrom flag import flagdef convert(m): m = m ^ m >> 13 m = m ^ m <&

2021-09-23 23:56:36 426

原创 [羊城杯 2020]Power wp 2021/9/22

[羊城杯 2020]Power题目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,

2021-09-22 16:34:16 1291 2

原创 第一届“长城杯”网络安全大赛 Crypto 复现

baby_rsa题目代码:#!/usr/bin/env python3from Crypto.Util.number import *from secret import flag, v1, v2, m1, m2def enc_1(val): p, q = pow(v1, (m1+1))-pow((v1+1), m1), pow(v2, (m2+1))-pow((v2+1), m2) assert isPrime(p) and isPrime(q) and (p*q).bit

2021-09-20 16:25:09 743 1

原创 [GUET-CTF2019]Uncle Sam

写这题的时侯迷迷糊糊才写出来的,不过不知道为什么看到这题给出的式子很容易就想到了费马定理(大概是印象太深刻了吧,昨天也是一道要用到费马定理的题)。[GUET-CTF2019]Uncle Sampubkey可以进行因式分解得到p,q。根据代码有如下公式:enc=mp2∗q(mod p2∗q)enc = m^{p^2*q}\quad(mod\ p^2*q)enc=mp2∗q(mod p2∗q)将该公式拆解,再利用费马定理化简:{c1≡enc≡mp2∗q≡mq(mod&nbsp

2021-09-16 17:03:35 373

原创 [GKCTF 2021]RRRRsa

昨天+今天都在了解和学习Rho算法以及题目羊城杯2021的easy_rsa。Rho算法算是看懂了点,可是用起来好像时间花销好大还解不出来(不知道是不是数据的问题,我用的模数是网站上无法分解的)。最最最最痛苦的是easy_rsa魔改rho后却能很快得分解出p,q,可我用Rho算法求解却解不出来(自己编的,代码附上),而且我还不知道为什么它这么一改就可以算出来。def f(x,c,n): return (pow(x,2,n) + c)%ndef Rho(n): while True:

2021-09-15 21:50:57 1401 5

原创 羊城杯2021 Crypto wp

1. RSA?题目:import osfrom Crypto.Util.number import *'''flag = "GWHT{xxxxxxxxx}"p = getPrime(256)q = getPrime(256)n = p*qN = (p-1)*(q-1)e = 65537Mx = bytes_to_long(os.urandom(30))My = bytes_to_long(flag)Z1 = (Mx*My)%ninv_Z1 = inverse_mod(Z1, n)

2021-09-14 09:54:40 944

原创 利用拟重合指数求解密钥具体内容

在前一篇文章中,已经讨论了如何根据重合指数求解密钥。现在讨论如何在已知密钥长度的情况下求解密钥。拟重合指数:qi 表示字母 i 在维吉尼亚密文分布中发生的概率, pi 表示字母 i 在正常英语文本分布中发生的概率,则拟重合指数可以定义为R = ∑ pi * qi (‘a’<= i <=‘z’)当两个频率分布类似时,R 的值相对要高。求解:也就是说,当明文在某个字母加密下的内积最大时,该字母极有可能是密钥中的字母。将密文按密钥长度分组,按列进行划分,每列所组成的密文就相当于进行了凯

2021-09-09 22:52:23 1695

原创 打卡 脑洞题 2021/09/08

今天 “ 专研 ” 求密钥的具体内容,也是有所参悟(别人的代码真简洁),鉴于现在还不能独立写出代码,所以就打卡两道脑洞题。(哈哈,还落下计组和大物没去学,拖了蛮久的,明天还要学计组,得补起来了!燃起来了????????????)1.yxxyxx ==> 异性相吸???根据之前写的异性相吸,推测是进行异或。那么就要把明文和密文的内容转成数字再进行异或(正好明文和密文给出的内容毫无意义,估摸着应该要取其十六进制数)。import binasciiimport Crypto.Util.strxor

2021-09-08 22:27:34 254

原创 重合指数求密钥长度

突然发现之前那个求密钥长度的代码具有局限性,所以还是跟着重合指数的方法来写代码吧!(不知道为什么,总想着投机取巧,换到题目就不适用了。淦!)好了废话不多说。根据重合指数的方法。首先将明文分组,按列统计其中字符的种类及个数,再计算CI。其中 fi 为每列中第 i 种字符的个数, L 为该列的长度。每列的CI之和取平均值可近似为当前分组长度(即密钥长度)的重合指数,若近似0.068或0.0665(因为按列的话,就变成了单表加密),则很有可能为密钥长度。很容易写出如下代码(应该没毛病):cipher

2021-09-07 21:34:42 999

原创 简单异或 密钥长度未知 如何求解? 2021/09/05

这里讨论的是明文与密钥进行简单异或的加密,但解密时密钥长度不给出的情况下进行解密。因为之前讨论过已知密钥长度进行解密的情况(Many-Time-Pad),给出了相应的解决方案。所以在密钥长度不知道的情况下,首要任务是想办法求解密钥长度。为了求出密钥长度len,可以利用卡希斯基实验和重合指数。参考:[卡希斯基实验和重合指数](密码学原理-篇1:重合指数 - 简书 (jianshu.com))简单来说就是卡希斯基实验是利用明文中可能会出现相同的单词(或相同的部分连续字母)被同样的密钥字母进行加密,对应密

2021-09-05 21:39:53 921

原创 打卡 21/9/3 [De1CTF2019]babyrsa

[De1CTF2019]babyrsa给出的代码分为四部分:1.第一部分(求p):n = [20129615352491765499340112943188317180548761597861300847305827141510465619670536844634558246439230371658836928103063432870245707180355907194284861510906071265352409579441048101084995923962148527097370705452

2021-09-03 23:27:36 722 2

原创 BUUCTF 打卡 21/9/1 Many-Time-Pad

参考博客:[Pion1eer_blog](Many-Time-Pad 攻击 (ruanx.net))因为最近遇到一道一次一密的题目,故把所学的记下。Many-Time-Pad攻击:本文讨论的情况是利用简单异或实现的加密,且是一个密钥进行多轮加密。假设加密的明文分别为M1 , M2 , … , Mi ,对应密文C1 , C2 , … , C3 , 密钥为K。加密过程为 Ci = Mi ^ K。根据异或的性质(相同为0,不同为1),我们可以将任意两个密文进行异或,将会得到不含有密钥的式子:Ci

2021-09-01 23:12:37 458

原创 BUUCTF 打卡 21/8/31

1.[羊城杯 2020]RRRRRRRSA这里我需要重新认识一下欧拉函数了。我以为φ(p * p * q) = (p - 1)2 * (q - 1) 。但实际上是错误的。欧拉函数的性质之一:设m = m1 * m2 ,则有若m1 和m2有相同的素因数,那么φ(m) = m2 * φ(m1)若(m1,m2) = 1 ,则φ(m) = φ(m1) * φ(m2)所以 φ(p * p * q) =p * (p - 1) * (q - 1)其他步骤就比较简单了。import gmpy2fr

2021-08-31 22:17:35 304

原创 希尔密码

今天是返校的一天,有很多事要去解决,所以就没时间打卡了,于是晚上学习了一下。希尔密码:按照字母表中字母顺序,将字母当作0~25。将一串字母当成n维向量,与一个n * n的矩阵相乘,再将得出的结果模26。注意: 用作加密的矩阵(即密钥)在Z26 n 中必须是可逆的,否则就不能解码。​ 只有当矩阵的行列式与26互质才是可逆的。设明文化成的向量为m,密文向量为c,密钥向量为k,根据希尔密码的定义给出如下公式:c = m * k mod 26 (m为1 * n)m = c *

2021-08-30 23:29:31 2014

原创 BUUCTF 打卡9

1.传感器5555555595555A65556AA696AA6666666955这是某压力传感器无线数据包解调后但未解码的报文(hex) 已知其ID为0xFED31F,请继续将报文完整解码,提交hex。提示1:曼联曼彻斯特编码:曼彻斯特编码(Manchester)又称裂相码、同步码、相位编码,是一种用电平跳变来表示1或0的编码方法,其变化规则很简单,即每个码元均用两个不同相位的电平信号表示,也就是一个周期的方波,但0码和1码的相位正好相反。解码:第一种约定由1949年由GE托马

2021-08-29 22:36:14 958

原创 BUUCTF 打卡8

1.[AFCTF2018]One Secret, Two encryption题目的意思是将一个明文进行两种不同的加密过程,生成两种不同的密文,所以我们只要求解其中一个即可。先进行公钥解析求出两次加密的(n,e)with open(r'public1.pub','r') as f: pub = RSA.importKey(f.read())n1 = pub.ne1 = pub.eprint(n1,e1)with open(r'public2.pub','r') as f:

2021-08-28 21:03:54 345

原创 BUUCTF 打卡7

1.[NPUCTF2020]共 模 攻 击给出两个代码。先解hint.py(毕竟解出来的东西是提示)。可以看出这里面含有共模攻击,解出c之后,我们就掌握了密文c,模数p,指数(256),再利用sympy.nthroot_mod(c,256,p)解出明文m。import sympy,gmpy2from Crypto.Util.number import *p = 1073169757712843421083629549450964897089003026337345209439052836552833

2021-08-27 22:16:44 470

原创 BUUCTF 打卡6

1.四面八方刚开始看还以为是维吉尼亚密码,但解不出合适的flag。看了他人的wp才知道是四方密码。四方密码1.介绍四方密码用4个5×5的矩阵来加密。每个矩阵都有25个字母(通常会取消Q或将I,J视作同一样,或改进为6×6的矩阵,加入10个数字)2.原理1)首先选择两个英文字作密匙,例如example和keyword。对于每一个密匙,将重复出现的字母去除,即example要转成exampl,然后将每个字母顺序放入矩阵,再将余下的字母顺序放入矩阵,便得出加密矩阵。2)将这两个加密矩阵放在右上角和

2021-08-26 21:45:41 848

原创 BUUCTF 打卡5

1.坏蛋是雷宾根据题目分析可知进行了Rabin加密。Rabin加密算法:Rabin加密算法通过上面这篇文章可知:mp = c(p+1)/4 mod p​mq = c(q+1)/4 mod qyp * p + yq * q = 1以及四个明文:m1 = yp * p * mq + yq * q * mp (mod N)m2 = N - m1m3 = yp * p * mq - yq * q * mp (mod N)m4 = N - m3可以证明每一个密文对应四个原文,而真正的原文一

2021-08-24 22:40:26 560

原创 BUUCTF 打卡4

1.rot首先看到这些数字,第一反应是觉得是ascii码,而且题目是rot,应该是属于移位密码了,把前几个数跟’flag’对应,出来的不对。既然不是小写,那应该是大写’FLAG’,得到FLAG IS flag{www_shiyanbar_com_is_very_good_???}MD5:38e4c352809e150186920aac37190cbc出来的是明文和md5加密后的密文,那应该是要进行爆破了。s = '83 89 78 84 45 86 96 45 115 121 110 116 13

2021-08-23 22:06:51 961

原创 BUUCTF 打卡3

之前一直觉得没有学,所以碰到不会的大概率都会划走。但想想,总该要面对的。不知道并不可怕,不知道还不去学才可怕。1. 丢失的MD5可以看出这段代码是在py2中运行的。解出来的就是flag。2.Alice与Bob????根据题目要求,将素数98554799767分解为101999和966233,并组成新的数101999966233,然后进行md5的32位小写哈希。(为什么用py2的md5库运行不是正确答案???)3.Windows系统密码windows下密码的格式:Windows系统下的

2021-08-22 22:17:29 303

原创 BUUCTF 打卡2

1.RSA4题目给出了三组c和n,猜测是广播攻击。猜测e = 3。自己写的脚本有点不靠谱,就借用书上的。值得注意的是题目给出的c和n都是5进制数!!!(仔细点的话可以看出数据中没有出现>=5的数字)#广播攻击???import gmpy2,libnumfrom Crypto.Util.number import long_to_bytes,bytes_to_longdef broadcast_attack(data): def extended_gcd(a,b):

2021-08-20 22:01:55 326

原创 BUUCTF 打卡1

由于后面的知识盲点太多了,就从头开始把之前不会的再做一遍。1.RSA5一大串数据,20次加密过程中的m、e相同。我以为是广播攻击,想着用剩余定理来解,自己编的脚本差劲,就用了书上的脚本。解出个’\x01‘。回头再看一下广播攻击的前提,加密指数e较低!!!e = 65537应该算大吧。于是只能将这20个n进行分解,在n5的时候解出了p、q。import libnum,gmpy2n = 22822039733049388110936778173014765663663303811791283234361

2021-08-19 17:27:03 214

原创 BUUCTF RSA(三)

这里写目录标题1.[MRCTF2020]babyRSA2.[WUSTCTF2020]dp_leaking_1s_very_d@angerous3.[NPUCTF2020]EzRSA4.[MRCTF2020]Easy_RSA5.[INSHack2019]Yet Another RSA Challenge - Part 11.[MRCTF2020]babyRSA根据给出的代码可以很容易推出_Q = sympy.nextprime(pow(sub_Q,Q_2,Q_1))。我们知道P[9],就可以推出其他的素

2021-08-18 15:47:49 944

原创 BUUCTF RSA(二)

这里写目录标题1.[BJDCTF2020]RSA2.[BJDCTF2020]rsa_output3.SameMod4.[BJDCTF2020]easyrsa5.[NCTF2019]babyRSA6.[ACTF新生赛2020]crypto-rsa37.[AFCTF2018]你能看出这是什么加密么8.[RoarCTF2019]babyRSA9.[RoarCTF2019]RSA10.[HDCTF2019]together1.[BJDCTF2020]RSA两个加密的n共用一个q,对n1,n2求最大公约数,进而分

2021-08-18 15:13:48 1256

原创 RSA中dp,dq ,npp的求解方法

这里写目录标题1.已知n,e,c,npp求解明文2.已知p,q,dp,dq,c求明文3.已知e,n,dp/(dq),c求明文1.已知n,e,c,npp求解明文 npp = (p+2) * (q+2)解密过程:e , p1=p , q1=q , n1=p * q , φ(n1)=(p1-1) * (q1-1) , p2=(p+2) , q2=(q+2) , n2=(p+2) * (q+2) , φ(n2)=(p2-1) * (q2-1)首先根据e和φ(n2)求出d2,对c解密求得明文m2,

2021-08-17 17:01:28 3477

原创 中国剩余定理

中国剩余定理:设m1,…,mk是k个两两互素的正整数,则对任意的整数b1,…,bk,同余式组:x ≡ b1 (mod m1)………………x = bk (mod mk)一定有解,且解是唯一的。(1)若令m = m1*…*mk,m = mi * Mi, i = 1,…k则同余式组的解可以表示为x ≡ b1 * M1’ * M1 + … + bk * Mk’ * Mk (mod m)其中Mi’为Mi模mi的逆元,即Mi’ * Mi ≡ 1 (mod mi),i = 1,…,k(2)若令N

2021-08-12 11:40:55 645

原创 playfair解密脚本

Playfair棋盘密码:加密:解密加密:第一步:制表密码表共5行5列,第一行(或第一列)是密钥,其余按照字母顺序。密钥中若有重复字母,则可将后面重复的字母去掉。同时i和j会被当作一个字母。第二步:整理明文将明文每两个字母组成一对。如果成对后有两个相同字母紧挨或最后一个字母是单个的,就插入一个字母X(或者Q)。​第三步:加密首先将明文字母两两一组进行切分,并按照如下规则进行加密:​ 1)若两个字母不同行也不同列,则需要在矩阵中找到另外两个字母(第一个字母对应行优先)。使这四个字母成为一个长方

2021-08-09 11:34:30 1134

空空如也

空空如也

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

TA关注的人

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