- 博客(21)
- 收藏
- 关注
原创 MT19937
梅森旋转算法可以产生高质量的伪随机数,并且效率高效,弥补了传统伪随机数生成器的不足。梅森旋转算法的最长周期取自一个梅森素数:2^19937 - 1由此命名为梅森旋转算法。常见的两种为基于32位的MT19937-32和基于64位的MT19937-64还有一个点:MT19937每次生成的随机数都是32位的getrandbits(32)方法可以获得一个32位随机数getrandbits(8)获得的是32位随机数的前8位,而在这之后再次使用getrandbits(8)获取的是下一个32位随机数的前8位。
2024-07-22 16:46:20 1218
原创 WKCTF Crypto wp
WKCTF Crypto wpfl@geasy_randomfl@gfrom Crypto.Util.number import *from sympy import *from tqdm import *from secret import flagfrom itertools import *from math import factorialimport stringtable = string.ascii_letters + string.digits + "@?!*"#26+
2024-07-22 00:19:14 1075
原创 HNCTF
正常·RSA常用的e是65537,那么65537-1=65536,它可能在base家族中能被找到(好明显的提示啊,想不到/(ㄒoㄒ)/~~)奇怪的字符,肯定也是一种加密,再次看到提示2^11=2048,所以是base2048(这谁想得到,摔桌(╯▔皿▔)╯)时间戳,是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数(不考虑闰秒),用于表示一个时间点。根据上图,有:模p的三阶矩阵群的阶为p(p-1)(p+1)(p^2+p+1)矩阵上的RSA,n是不大的,可以直接分解,主要还是求d的问题。
2024-05-27 22:12:40 1103
原创 ciscn
先是埃特巴什密码(这个需要进行多次测试),然后base64,再栅栏即可答案:flag{b2bb0873-8cae-4977-a6de-0e298f0744c3}
2024-05-27 22:10:08 1246
原创 HZNUCTF2024 Crypto复现
一开始看到p>>500是想爆破的,但是用的不是费马分解是开方后另一个直接+1往后遍历的,没跑出来,以为是数据可能相差太大,于是想着推一下(看来费马分解对于这种问题的普适性更好一点的感觉)那么对(1+1/2^500)*n开根号,再往下取素数能够得到q,即可得到p,q,然后正常rsa解即可(其实这里再缩小一下范围就能够知道 根号(1+1/2**500)n往下取素数就是q)那么q=next_prime(p + p>>500)=p+p/(2**500)+r。p>>500即等于p/(2**500)
2024-04-16 01:04:37 912 1
原创 NKCTF
GGH这个东西真不懂(有关格,等我后面恶补一下),看了wp才知道可以直接爆破delta就可以得到答案。答案:nkctf{G0od_Y0u_Ar3_Kn0W_Ggh_Crypt0syst3m!答案:nkctf{cb5b7392-cca4-4ce2-87e7-930cf6b29959}因为delta不大于20,很小,完全可以爆破出来。python(把公钥转矩阵)
2024-04-02 02:07:08 376 1
原创 学警杯 Crypto/Re 复现
所以我们可以把n开根号,得到的结果一定是在p,q之间的一个数字,(而且一定不是素数,因为p,q就是紧邻的两个素数)。核心总结就是:令a是n的"中间值"(即根号n),然后让a以步长为1自增遍历,直到pow(a,2)-n的结果可以正好开方为止。那么想到可以通过这个式子求phi(n),然后就可以求解了,那么phi(n)和phi(phi(n))之间肯定是有联系的,即p,q的结构会比较特殊。2.&的时候记得打括号,因为&的优先级比<<,>>的优先级低,所以会先执行0xff>>2这样的,会导致数据的错误。
2024-04-02 00:39:21 484 1
原创 HSCCTF 2024 复现
题目中给了e,n1,n2,c,h0,h1,h2,而n1,n2,h0,h1,h2正好都与p,q相关,那么很明显是根据n1,n2,h0,h1,h2求解p和q,得到p,q就能够解出答案。3.理解了很多时候数据mod n而不是mod p是因为mod p会减少运算域,即将结果限制在一个较小的范围内,显然mod p只会将范围限制在不大于p的范围内,所以不行。每个块的加密和解密都是独立的,且使用相同的方法进行加密,所以可以进行并行计算,但是这种方法一旦有一个块被破解,使用相同的方法可以解密所有的明文数据,安全性比较差。
2024-03-24 22:51:42 1043 1
原创 VCTF复现
然后跟进sub_1249函数看一下,可以发现是一个base64编码(如果不知道的话可以扔给chatGPT让它帮忙分析,也可以得到是base64编码)所以我们先进行base64解码,我直接在线网站解码,不行,这应该不是常规的base64编码,应该换表了,我们跟进base64编码代码看一下。这也意味着m-n是key的倍数,我们试一下分解m-n(尝试了一下暴力,数据太大跑不出来)这道题好神奇,没见过这种,主要考的点居然是位数差异的问题,其实很简单,但是好难想到啊。然后再进行解码(可以拿脚本,或者在线网站都行)
2024-03-20 16:10:47 739 1
原创 HGAME week2复现
这里我们跟入Check1函数,进行分析,很明显是RC4加密(注意MainActivity传入的值,很重要,不要弄错了)
2024-03-10 12:21:21 720 1
原创 HGAME 2024 WEEK 1(复现)
我们可以看到含有{的图片有5个,说明原图片上的字符正好是hgame{,只有这个与其他异或能够得到5个含{的图片,剩下的我们直接手动排序即可(含有{的图片可以不去看,里面包含的信息我们已知为hgame{,此外需要注意的是因为图片的异或,相同的相素点会消失)而nextbit的值是i的每一位进行异或的结果,即i上的mark有效位的值的异或(a^0=a,异或不分顺序,所以0的异或可以忽略不计)答案:hgame{G0od!答案:hgame{F3rmat_l1tt1e_the0rem_is_th3_bas1s}
2024-03-06 22:49:14 933 1
原创 Crypto(Buu 题解,第一页部分以及第二页的题目)
但是我们获得它的32位MD5码也是残缺不全,E903?flag是老王说的暗号。根据题目知道是base密码,然后由给出的表可知是base64编码,但是不是base64的标准表,所以把密文转为标准表下的密文,然后base64解密即可(一开始真的没看出来,主要是base64密码没有那么熟悉,可是已经见过很多次了)一开始打开傻乎乎的开始寻找是不是一种特殊的密码,结果没找到,主要是打开密文有一堆方框,后来看了wp,才知道自己打开文件的格式错了,才会出现方框(但是后面改格式也没改出来,啊啊啊啊,这个先放一下吧)
2024-01-31 04:23:27 1538
原创 赣CTF复现
流密码加密过程是使用初始密钥产生一个伪随机的密码流,为了防止密钥穷举,使用和明文信息一样长的密钥(无限)流进行加密,连续地处理输入元素序列(通常是用密码流和输入序列做异或运算),产生对应的连续输出序列(密文)。:有1,2,4,8这四个数字,可以通过加法来用这四个数字表示0-9中的任何一个数字,例如 0=28, 也就是0=2+8,同理7=124, 9=18。看了wp之后才理解了。由rsa解出flag=[5,11,0,6,8,18,19,7,8,18,8,18,21,4,17,24,4,0,18,24]
2023-12-21 02:18:34 1296
原创 Crypto 5
那么由费马定理有:a ^ k*(p-1)≡1 mod p 即 a ^ B!那么现在的问题就是如何分解n,使用工具果然分不开,好吧不会了,搜索了一下(搜索引擎是强大的),看了一下网上的wp。刚拿到手直接用了rsa解密方法,但是e和phi是不互素的,且e和phi的因子也都不互素,陷入困局。(p-1)和(q-1)都是sieve_base列表中若干个素数的乘积,即。设有一个B,使其满足p-1=p1*p2*....*pn,pn
2023-12-05 13:27:47 1008
原创 Resever2(题解)
花指令:一种专门用来迷惑反编译器的指令片段(不影响程序,但会使反汇编器结果出现问题)经典的花指令有:jmp,call,ret等按P键重新反编译(要点到main那里才行)然后按空格键回到方块那里(不知道叫什么),再按F5进行反汇编即可可以知道加密操作那么写出对应解密代码即可注意解密代码编写时得到答案:FCTF{S0-be@ut1fUl-f10weRs}
2023-12-05 01:15:21 403
原创 Crypto(BUU 题解)
观察题目,已经给了我们一大部分的flag,只剩下7个没给出来,可以直接枚举出来需要知道的一点要注意一点:我们是知道最后的是“}”,那么只需要循环6次即可,多了可能跑不出来得到答案:FCTF{e388fc29-339a-45f3-84ac-7f84c790b4cb}
2023-12-04 22:53:00 1131
原创 Crypto 4
经过提点,将n进行开根号得到一个数,这个数会与p相差不大,于是先判断是否为素数,如果不是就取下一个素数(next_prime),再用n // p求q即可(需要注意的是这里不能用q = next_prime§求解,因为q有可能是p的前一个素数),然后按照常规解法即可。观察代码可知n由p,q,r三个数得出,对应的欧拉函数也有改变,其余不变,则解密的n与phi也随之改变,即可求出答案。根据n = (p**3) * q求其对应的欧拉函数*(小于等于n的正整数中与n 不互质的数的数目)*即可求出答案。
2023-11-27 23:25:11 1525
原创 Resever 题解(FCTF and BUU)
字符串比较函数,字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。功能是把 str1 和 str2 进行比较,最多比较前 n 个字节,若str1与str2的前n个字符相同,则返回0;终止符可以是默认的终止符,也可以是定义的终止符。函数的语法结构是:getline(<字符数组chs><读取字符的个数n><终止符>)。得到答案:FCTF{You_Are_Great_Xor_is_Very_Easy}可以看出并没有关于flag的文字,全文只有v5这一个字符串,那么尝试提交,成功。
2023-11-27 22:32:48 895 1
原创 Crypto 3
首先了解一下RSA加密解密知识:RSA加密算法是一种非对称加密算法,所谓非对称,就是指该算法加密和解密使用不同的密钥,即使用加密密钥(公钥)进行加密、解密密钥(私钥)进行解密。在RAS算法中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,由于无法计算出大数n的欧拉函数phi(N),所以不能根据PK计算出SK。也就是说,对极大整数做因数分解的难度决定了RSA算法的可靠性。
2023-11-11 00:28:04 93 1
原创 Crypto 2
但得到的仍然是一大堆字母(大小写均有)+数字,继续使用Base 64解密,如此循环,最终得到正确的flag。在这里卡了一下,一开始以为是Base 91结果一堆乱码,后来猜是凯撒密码,但是以为是变异凯撒,测试后发现没有规律。Base 58特征:相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+"和"/"符号,最主要的是后面不会出现'='。于是使用社会主义编码解密,但是又得到了一串看不懂的东西,继续查看常见编码,发现了brainfuck编码。
2023-11-04 10:51:08 144
原创 Crypto 1
首先在使用了凯撒密码解密器之后发现都不行,这就有点不一样了,在具体了解了一下经典的凯撒密码应该是字母在字母表中移位,按理来讲应该都是字母才对。可是密文中有数字,_,^,这个就说明不是按照字母表来移位的,应该是ascii码表。这道题一开始拿到确实挺懵的,不知道怎么处理,因为这个不在我目前了解过的密码中(当然是因为我也不知道什么),后来自己去查了一下了解到了Base系列编码。【变异凯撒】这道题真的困扰我很久,因为不知道怎么处理。当然最后还是没有想出来,就找了点外援(真的不会啊),上网查了一下,真的很神奇。
2023-10-28 11:08:30 88 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人