Crypto
文章平均质量分 61
mortal15
这个作者很懒,什么都没留下…
展开
-
Python大整数的小数次方的计算(Decimal使用)
Python大整数的小数次方的计算原创 2021-11-19 00:09:07 · 5548 阅读 · 3 评论 -
2021【陇原战“疫”】crypto部分writeup
这次BUUCTF月赛对我来说确实还行了,不会太难,也能学到东西,主要想说说比特翻转攻击的问题,最近这种题碰的特别多,CBC的,CFB的,GCM的,各种各样的AES模式的攻击问题,从最基本的CBC开始,系统地搞个专题。这次月赛的全面wp请看2021陇原战疫WP - n03tAck我比较菜,就把简单的题细说下。mostlycommon不想多说,简单的共模攻击,只是两个加密指数的最大公因数是2,最后得到的结果开个平方就是flag了。Civet cat for Prince(比特翻转攻击)原创 2021-11-09 15:40:18 · 979 阅读 · 0 评论 -
Crypto RSA中的数学技巧
闲聊两句之前做到[GKCTF 2021]RRRRsa的时候遇到过这种问题,就是去构造hint和p,q的关系,感觉也没啥好说的,就是去想、去试,当时也没啥记录,没想到这次2021东华杯遇到了老朋友,感觉有必要写篇文章总结下了。问题解析先看[GKCTF 2021]RRRRsafrom Crypto.Util.number import *from gmpy2 import gcdimport gmpy2flag = b'xxxxxxxxxxxxx'p = getPrime(512)..原创 2021-11-02 16:24:21 · 3467 阅读 · 1 评论 -
莲城杯MT19937_64
题解考的是MT19937,从输出中弹出了第375个随机数,每个随机数为64bit,是足够还原states的,一般情况下对这种问题直接通过624个32bit的out推出用来生成他们的states,然后依据states推出下一轮的states用以生成下一轮的out,发现少了哪个补上哪个就好。但是在这里情况稍有不同,原来用的预测脚本如下:from random import Randomo = 99999999999999999999999999999999999999999999999999999原创 2021-10-14 20:18:57 · 822 阅读 · 0 评论 -
[羊城杯 2020]GMC题解
def gen_y(gN): gy_list = [] while len(gy_list) != F_LEN: ty = getRandomNBitInteger(768) if gcd(ty,gN) == 1: gy_list.append(ty) return gy_list刚做这道题看到上面的getRandomNBitInteger()函数,不自觉地网MT上靠,但是发现有一个神出鬼没的x存在,让我根本还原不了6...原创 2021-10-06 20:39:03 · 2503 阅读 · 1 评论 -
[GKCTF 2021]XOR
简介这题和之前做的dfs类似,算是个高级版的爆破吧,是个挺好的例子,前面的脚本可以解决第一部分,5space signin(未知低位的dfs和coppersmith)_a5555678744的博客-CSDN博客在这里就不赘述了。重点来说说本题的第二部分。题解参照知乎大佬的算法,自己手敲了个自己比较容易看懂的版本[GKCTF] GKCTF x DASCTF应急挑战杯 个人(or团队) Crypto方向 writeup - 知乎from Crypto.Util.number import原创 2021-09-30 00:03:56 · 2252 阅读 · 0 评论 -
DASCTF Sept X 浙江工业大学秋季挑战赛rsa1
这道题其实比较经典,最早应该是出现在2016年的HCTF,出题的思路可以参照这篇博客2016 HCTF Crypto 出题总结#! /usr/bin/env python# -*- coding: utf-8 -*-# from flag import get_flagfrom hashlib import sha512import randomfrom Crypto.Util.number import long_to_bytes, getPrime, bytes_to_longf原创 2021-09-26 00:08:14 · 790 阅读 · 0 评论 -
2021长安杯 easyRSA
def add(a,b): if(a<b): a0 = str(b).encode() b0 = str(a).encode() else: a0 = str(a).encode() b0 = str(b).encode() ans = 0 for i in range(len(a0)-len(b0)): ans = ans*10+a0[i]-48 for i in range(l.原创 2021-09-25 23:04:03 · 458 阅读 · 0 评论 -
长城杯baby_rsa题解
from 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_length() == 2048 and q < .原创 2021-09-24 23:22:18 · 958 阅读 · 0 评论 -
2021羊城杯 Rsa?题解
yafu分解n很快就可以得到p,q但是没什么用仔细观察getloop可以找到像杨辉三角类似的结构其中x1是其中的奇数项和,y1是其中的偶数项和实际上最后得到的x1和y1满足((X+aY)^65536)mod n=(s1 + a*s2)mod n随后根据a = ((inv_Z1-X)*inv_Y)%n ,得知(s1 + a*s2)mod n就是inv Z1随后算出Z1,得到X最后Y =(n+x_add_ay-X)*gmpy2.invert(a,n)%n得到flag...原创 2021-09-24 21:07:59 · 366 阅读 · 0 评论 -
5space signin(未知低位的dfs和coppersmith)
from Crypto.Util.number import*c = 634883169316521652837689136938162547928965634141885739610106933307751437750309132172808903946590498145705068008696587981997669192797966993873489339809024374754073211864959722070552652664989977138936777892539487744598391.原创 2021-09-24 20:54:55 · 414 阅读 · 0 评论 -
[DASCTF八月挑战赛]easymath题解
DASCTF八月赛的Crypto方向,拿下其他两道题很简单,但是这道最多人解出来的题反而解不出来。打完比赛回来看其他师傅写的wp,说是这是TSGCTF原题,所以直接放弃思考,上大佬的wp,我看看大佬这个wp,感觉这题还是有点东西的,里面涉及的基础的一些数学知识还是值得总结总结。题目assert(len(open('flag.txt', 'rb').read()) < 50)assert(str(int.from_bytes(open('flag.txt', 'rb').read...原创 2021-08-31 15:31:17 · 785 阅读 · 1 评论 -
XCTF夏令营选拔赛TooooomanyRSA题解
先看一道类似题目的题解,这是2020羊城杯的simple:引用自:https://blog.csdn.net/jcbx_/article/details/109306542from Crypto.Util.number import *from gmpy2 import invertc = 6472367338832635906896423990323542537663849304314171581554107495210830026660211696089062916158894195561原创 2021-08-07 10:41:44 · 410 阅读 · 0 评论 -
全国大学生信息安全大赛线下赛crypto3题解
打比赛收获挺大的,虽然主要是AWD的经验增长,但解题赛里也是有道有趣的题的。首先看看题目,其实数学基础比较厚实的话,题目思路出的应该挺快,不过中间有两座计算大山,当时一时没搞出来,但是回头想想还是出来了。各位师傅可以先看看,说不定可以直接搞定呢。from random import *from sympy import nextprimefrom serct import flagdef Printprime(bits): A1=getprime(bits) A2=getprime(b原创 2021-06-28 22:35:01 · 895 阅读 · 3 评论 -
[CISCN2018]sm题解
简介这道题比较老了,但是质量还是不错的,本来应该是跟SM加密方式有关的,但是脚本能直接读懂,那就不必再去查了。题解分析函数首先分析一下题目的代码,从运行的顺序来逐个分析函数直接调用的函数是run()这个函数内部最关键的是这个key,这是AES加密的密钥,有了key,才能从ef中的密文还原出flag。再看key的来源:虽然有一大串式子,但是都是在以固定的方式变换形式,真正影响key的只有choose这个变量。顺势就看看choose怎么求:仔细看这段代码,大概意思是,从前往后遍历cho原创 2021-06-25 09:31:39 · 932 阅读 · 0 评论 -
[羊城杯 2020]Power题解
简介看网上很缺这道题的资料,姑且写一篇给师傅们看下吧,这道题步骤简单但是还是有点有意思的东西在里面的题解初步分析from Crypto.Util.number import *import gmpy2import sympyfrom secret import flagp = getPrime(512)q = getPrime(512)n = p**4*qe = 0x10001phi = gmpy2.lcm(p - 1, q - 1)d = gmpy2.invert(e原创 2021-06-08 23:14:27 · 3122 阅读 · 2 评论 -
[羊城杯 2020]RRRRRRRSA 题解(wiener attack运用)
简介自己写脚本搞定这道题有助于理解wiener attack,在多种关于RSA攻击方法中,这种方法算是比较难理解的一种,本题设计还是比较有意思的,算是该攻击方式的一个灵活运用,单纯依靠现成脚本也是不行的,必须学会wiener attack的原理才能顺利解决该问题。原理阐述wiener attack 是依靠连分数进行的攻击方式,适用于非常接近某一值(比如1)时,求一个比例关系,通过该比例关系再来反推关键信息就简单很多。这种攻击对于解密指数d很小时有很好的效果,一般的用法是通过ed mod phi(N)原创 2021-06-08 15:24:00 · 3253 阅读 · 6 评论 -
[XNUCA2018]baby_crypto题解
简介本题是重合指数问题中经典问题,建议各位师傅能够独立写解密脚本亲测,真的非常有帮助!!废话也不多说了,解这题的方法稍有不同,与网上流传的wp有一定区别,对技术原理有兴趣的师傅一定不要错过。接下来,看题!题解题目给了个伪代码The 26 letters a, b, c, ..., y, z correspond to the integers 0, 1, 2, ..., 25len(key_a) = mlen(key_k) = nc[i] = (p[i] * key_a[i % m] +原创 2021-06-07 00:15:48 · 25700 阅读 · 2 评论 -
[watevrCTF 2019]ECC-RSA 题解
简介刚开始解除ECC,先去补了点基础知识,建议想搞懂相关基础理论的朋友们可以参考这位师傅的博客,解决这道题这些理论绰绰有余了https://blog.csdn.net/sitebus/article/details/82835492了解基础知识之后这道题的分析其实不是很难分析算法逻辑from fastecdsa.curve import P521 as Curvefrom fastecdsa.point import Pointfrom Crypto.Util.number imp原创 2021-06-05 00:25:42 · 1861 阅读 · 0 评论 -
[De1CTF2019]babyrsa writeup
总述对于学习RSA来说,这道题无疑是很好的教材,这道题集合了许多常考的RSA的出题点,前三步解密较为简单,但是第四步有一定难度,要想做出来得费不少功夫。总而言之是一道很不错的Crypto题。题解第一步最上面一层给了4组n和c,中国剩余定理估计是八九不离十了,而且这里用的lambda函数希望对python不熟悉的可以去查一下了解一下,算是一个很方便的小函数创建,也经常在Crypto的py脚本中出现。中国剩余定理的python脚本如下:import gmpy2import mat原创 2021-05-27 00:39:07 · 2014 阅读 · 6 评论 -
【Neepuctf】Crypto部分writeup
Crypto方向1.RSA先看一下代码,分析一下逻辑,要想得到flag,不仅要知道n的分解方式,还需要知道e是多少,那么把目标分解为两步,而这两者都和encode(p,q,e)有关。分析到encode(p,q,e)里面,发现这个函数里面,S是e的模逆,(m*e-1)%(p+1)==0那么就知道一定要先搞定m和e就可以搞定p了求e的过程这是明显的padding Oracle攻击可以用富兰克林算法搞定注意以下脚本并非python脚本而是sagemath脚本,需要在sag.原创 2021-05-24 00:21:15 · 838 阅读 · 0 评论