刷题记录
PUTAOAO
ctf萌新
展开
-
ByteCTF Crypto
easyxorAES的CBC模式和OFB模式之前赵师傅讲过 听得有点云里雾里的现在跟着这题的wp顺一遍首先iv与key是不知道的,只知道前半段密文是OFB模式,后半段是CBC模式贴两张图这个是CBC加密,我们可以知道最后一个密文的iv就是前一个密文通过这个可以爆破出key 因为我们知道flag最后是以}$$$$结尾的from Crypto.Util.number import *# right shift inversedef inverse_right(res, shift, bi原创 2021-10-18 21:57:51 · 330 阅读 · 0 评论 -
ctfshow
crypto2_月自圆已知m长为71加密后长度为142flag在m中第53位置则在密文中105的位置刚好是salt的位置可以爆破salt和af ⇒ 1cl ⇒ 29a ⇒ 56g ⇒ 66from itertools import *from random import *from string import *def encrypt(m, a, si): c="" for i in range(len(m)): c+=hex(((ord(m[i])) * a + ord(原创 2021-08-12 15:22:20 · 189 阅读 · 0 评论 -
ctfshow 密码挑战
真·biginner给出了m<<10000十进制的后175位。化为数学公式就是m*2^10000 %10^175=cm= c*2^-10000 mod 10^175m= c*2^-10000 mod 5^175import gmpy2from Crypto.Util.number import *c=1002773875431658367671665822006771085816631054109509173556585546508965236428620487083647585原创 2021-08-06 20:22:54 · 2595 阅读 · 0 评论 -
2021-08-02
[Zer0pts2020]ROR通过代码可知n为2 的倍数对n取余二进制最后一位不变所以可以得到c的最后一位即为m的最后一位import gmpy2flag=''f=open('chall.txt','r').readlines()li=[]for i in f: li.append(int(i.strip('\n')))#print(li)for i in li: flag+=bin(i)[-1]from Crypto.Util import numberprint原创 2021-08-02 21:38:22 · 332 阅读 · 0 评论 -
2021-07-30
RealSimpleAlgorithmdef findPrime(k): return k if isPrime(k) else findPrime(k+1)这个就是nextprime的函数根据素数定理,素数的平均间隔为:xπ(x)≈ln(x),因此常见的下一个素数比当前素数大一点,一般不会超过1500。所以q≈20210123⋅p2 r≈p⋅q2≈202101232⋅p5 s≈p⋅q⋅r≈202101233⋅p8 n≈p⋅q⋅r⋅s≈202101236⋅p16from Crypto.Ut原创 2021-07-30 20:27:09 · 208 阅读 · 0 评论 -
2021-07-29
easysignin哪里easy了呜呜呜查资料时看到了LCG顿时悟了这道题是LCG与RSA的结合给出了序列但是不知道a,b,mfrom gmpy2 import *from sympy import *from functools import reducedef crack_unknown_modulus(states): diffs = [s1 - s0 for s0, s1 in zip(states, states[1:])] zeroes = [t2*t0 - t原创 2021-07-29 20:19:16 · 277 阅读 · 0 评论 -
2021-07-28
文章目录[AFCTF2018]One Secret, Two encryption36D杯rsaEZ总结[AFCTF2018]One Secret, Two encryption得到题目一份秘密发送给两个人不太好吧,那我各自加密一次好啦~~~ 素数生成好慢呀 偷个懒也……不会有问题的吧?猜出两个n有公因子可得出pimport gmpy2from Crypto.Util.number import *n2=2367536768672000959668181171787295271898789原创 2021-07-28 19:42:32 · 335 阅读 · 0 评论 -
7.23 密码
SSSSp=e4fa76fb77c30f889bbab54d7d7a3e7edbd7ae6c42a1a443f657e95c5708fa15(1,9768db2b62cf5e892fd6a0fc26c1387974eefd609998d04a5db830cd85e334bd)(3,7452014a456e0545c248617169f6426edd53d4f65ae9dced2ecc0c2911651410)(5,ed09d852d4789d46891970459a710db6df790be773a原创 2021-07-23 14:34:49 · 1132 阅读 · 0 评论 -
7.21 密码
密钥生成 随机选择两个大质数 p,q 满足 gcd(pq,(p−1)(q−1))=1。此属性保证两个质数长度相等; 计算 n=pq 和λ=lcm(p−1,q−1); 选择随机整数 g(g∈Z∗n2),使得满足 n 整除 g 的阶(0<g<n2); 定义 L(x)=x−1n; 计算 μ=(L(gλmodn2))−1modn; 公钥为 (n,g),私钥为 (λ,μ)。 简化版 g=n+1 λ=φ(n)=(p−1)(q−1) μ=φ(n)−1mod n 加密 m 为原文(0≤m<n); 选择随机数原创 2021-07-21 18:35:42 · 188 阅读 · 0 评论 -
7.20刷题
[羊城杯 2020]Power得到了dp 和 关于p的一个方程看下部分求p求离散对数https://www.cnblogs.com/YuanZiming/p/13070883.htmlsympy的常用函数总结~import sympyy = 44970334770928732898244681231887015823036968862589430795360407450241325804526550249636599838356211991556508051807736083970500405原创 2021-07-20 17:42:13 · 233 阅读 · 0 评论 -
7.19刷题
[b01lers2020]safety_in_numberflag.encpubkey.pem和一个加密pypubkey告诉我们n很大e=65537读取c因为n很大c直接开e次方因为是“little”所以需要逆序import gmpy2from Crypto.Util.number import *e=65537with open('flag.enc','rb') as f: cipher = f.read()c = int.from_bytes(cipher, byt原创 2021-07-19 20:30:41 · 200 阅读 · 0 评论 -
Copperstudy
强网杯2019 Copperstudy给出了动态接口nc 一下第0关[+]proof: skr=os.urandom(8)[+]hashlib.sha256(skr).hexdigest()=45a6143708fd4ff9de06cb4f0610adc4a54dbd1894ac636272f07f0825ae81b7[+]skr[0:5].encode('hex')=aa8a80cc07[-]skr.encode('hex')=得到数据的前6位的十六进制值和数据的sha256这里要用到原创 2021-07-19 09:50:23 · 204 阅读 · 0 评论 -
7.17
LeftOrRight图片用010打开第一段和最后一段是十六进制的数 后面又有jpg的开头提出来发现是一棵树 分叉了二叉树 给了前序和中序的数据求后序不会代码 直接手撕[watevrCTF 2019]ECC-RSAp.q满足椭圆方程y^2=x^3+ax+b即p^2=q^3+aq+bn=pq所以n^2=q^5+a*q^3+bq^2sage解方程每个都试一下发现第二个是对的import gmpy2from Crypto.Util.number import *p=457374原创 2021-07-17 19:34:02 · 96 阅读 · 0 评论 -
crypto 7.16
[ACTF新生赛2020]crypto-des这道考点是des 和 数据在内存中的存储刚开始就卡住了c语言中有趣的数据结构查了一下好像之前考到过数据在内存中的存储把数据转为内存中的存储 大佬脚本from libnum import*import structimport binasciis = [72143238992041641000000.000000,77135357178006504000000000000000.000000,1125868345616435400000000原创 2021-07-16 14:58:16 · 357 阅读 · 0 评论 -
每日刷题 7.13
warm upfrom Crypto.Util.number import getStrongPrime, GCDfrom random import randintfrom flag import flagimport osdef pad(m: int, n: int): # PKCS#1 v1.5 maybe ms = m.to_bytes((m.bit_length() + 7) // 8, "big") ns = n.to_bytes((n.bit_length() + 7)原创 2021-07-13 21:22:32 · 207 阅读 · 0 评论 -
刷题记录 7.10
[QCTF2018]Xman-RSA得到一个加密文本通过词频分析得到正确的加密文本from gmpy2 import is_prime from os import urandom import base64 def bytes_to_num(b): return int(b.encode('hex'), 16) def num_to_bytes(n): b = hex(n)[2:-1] b = '0' + b if len(b)%2 == 1 else b原创 2021-07-11 14:35:31 · 146 阅读 · 0 评论 -
刷题记录 7.8
大数计算直接用sage跑就行然后转16进制togethermyflag1和2 base64解密 解不开以为是网站问题 发现都解不开 找到了一个可以转为16进制的网站https://www.qqxiuzi.cn/bianma/base64.htm\x47 \x73 \x68 \xcb \xaa \xf7 \x58 \xb2 \x2d \xca \xd0 \x26 \x6f \x81 \x66 \x1c \x4c \xa0 \xa2 \x29 \x6e \x70 \x41 \x19 \x6c原创 2021-07-08 21:19:28 · 207 阅读 · 0 评论 -
刷题记录 7.7
[MRCTF2020]babyRSA需要求得p和qq简单点Q_1=1037664398494655880846250494957938576345565170645634884331482245246381059711610517631277184380628625481848147476012994940528136628514597401274995577853987144819094616319960200483157901679676999329679744844812098796641730原创 2021-07-07 21:58:18 · 803 阅读 · 0 评论 -
刷题记录 7.5
[RoarCTF2019]RSAA=(((y%x)**5)%(x%y))**2019+y**316+(y+1)/xp=next_prime(z*x*y)q=next_prime(z)A = 268334918267871452424746951279347600986101478100492490548412748030816137776819286806156188657704864643238212896088148746342741417611448688583069395940498974原创 2021-07-05 20:52:08 · 182 阅读 · 0 评论 -
刷题记录 7.3
[De1CTF2019]babyrsa看到有个hint求hintn可以分解import gmpy2from Crypto.Util.number import long_to_bytesp=127587319253436643569312142058559706815497211661083866592534217079310497260365307426095661281103710042392775453866174657404985539066741684196020137840472950原创 2021-07-03 19:07:00 · 208 阅读 · 0 评论 -
刷题记录7.2
ctfshowfunnyrsa2n=pqr可以分解得出p,q ,rfrom Crypto.Util.number import *import gmpy2e = 0x10001p = 876391552113414716726089q = 932470255754103340237147r = 1098382268985762240184333n = 8976079357809558370787845151151862031808222134829890413980730679960原创 2021-07-02 20:19:17 · 204 阅读 · 0 评论 -
刷题记录7.1
BUUrsa2好早之前做的一直提交不正确然后发现是py3和py2 的md5不一样 虽然不知道为什么。给出了n和e 求de很大用winner attack求出dBJDCTF RSAfrom Crypto.Util.number import getPrime,bytes_to_longflag=open("flag","rb").read()p=getPrime(1024)q=getPrime(1024)assert(e<100000)n=p*qm=bytes_to_lo原创 2021-07-01 22:00:45 · 322 阅读 · 0 评论