2023-12-05から1日間の記事一覧

up to isomorphism

これはそういうslangのようなもので、2つの群が同型(isomorphic)であるとき2つの群は区別できないから同じであるかのようなんだが、厳密には異なるので、"up to isomorphic" (同型まではおなじ)と言うらしい https://www.math3ma.com/blog/up-to-isomor…

tinyctf 2014 | WTC RSA BBQ

#RSA https://github.com/jesstess/tinyctf/blob/master/rsa/rsa.md RSAなんだけど n = 0b100101001011...1 で 8000bitsくらい。 こんなに1が連続してるのは不思議だね。 になって後ろが ...1 になることがわかれば、 p, qが 2x に近い形の双子素数なのでは…

redpwn CTF 2021 | blecc

#redpwnctf2021 #uninterested_challenge_list p = 17459102747413984477 a = 2 b = 3 G = (15579091807671783999, 4313814846862507155) Q = (8859996588597792495, 2628834476186361781) d = ??? Can you help me find `d`? Decode it as a string and wra…

half-GCD

がたがた言わずに与えられたものを使え。これは 一変数多項式のgcd の高速なやつです def pdivmod(u, v): """ polynomial version of divmod """ q = u // v r = u - q*v return (q, r) def hgcd(u, v, min_degree=10): """ Calculate Half-GCD of (u, v) f …

diceCTF2022

https://github.com/defund/ctf/tree/master/dicectf-2022 https://hackmd.io/fmdfFQ2iS6yoVpbR3KCiqQ

cyber_apocalypse_ctf_2021

https://github.com/cryptohack/Cyber-Apocalypse-CTF-2021

corCTF 2021 | supercomputer

#corctf2021 from Crypto.Util.number import getPrime, long_to_bytes from pwn import * import random, binascii flag = open('flag.txt').read() def v(p, k): ans = 0 while k % p == 0: k /= p ans += 1 return ans p, q, r = getPrime(2048), getPrim…

bsidesahmedabadctf_2021

WMCTF 2020 | game

CBCモード IV固定のCBCモードでECB のChosen Plaintext Attackのようなものをやれという問題。リクエストの回数に制限がなく、時間も20minと十分にとってあったので、適切なサーバを使って高速ネットワークに頼ればなんとかなる IVがわかっているので最初のb…

TokyoWesterns CTF 6th 2020 | sqrt

from Crypto.Util.number import bytes_to_long, isPrime from secret import flag, p def encrypt(m, k, p): return pow(m, 1 << k, p) assert flag.startswith("TWCTF{") assert len(flag) == 42 assert isPrime(p) k = 64 pt = bytes_to_long(flag.encode…

TokyoWesterns CTF 6th 2020 | The Melancholy of Alice

from Crypto.Util.number import getStrongPrime, getRandomRange N = 1024 def generateKey(): p = getStrongPrime(N) q = (p - 1) // 2 x = getRandomRange(2, q) g = 2 h = pow(g, x, p) pk = (p, q, g, h) sk = x return (pk, sk) def encrypt(m, pk): (…

TokyoWesterns 6th CTF 2020

https://rkm0959.tistory.com/163 https://s3v3ru5.github.io/notes/tokyowesternsCTF#sqrt https://gist.github.com/nomeaning777/dc1ff2a08895ad871f9c6b4851bd831b#file-twin-d-sage

Teaser Dragon CTF 2019 rsachained

Keys are generated in the standard way with the default setup... task.py output.txt import os import gmpy2 flag = int(open('flag.txt').read().encode("hex"), 16) def genPrime(bits): data = os.urandom(bits/8) number = int(data.encode("hex")…

TG:HACK 2019 |Flippin' Awesome

#TG:HACK2019 We made a really awesome site, please check it out: https://awesome.tghack.no. Here's the source code if you want to take a look: server.py #!/usr/bin/env python2 from flask import Flask, render_template, request, url_for, red…

Supersingular Curves with Small Non-integer Endmorphisms

http://stanford.edu/~jonlove/ANTS2020.pdf

Sekai CTF 2022 | ezmaze

#Sekai_CTF_2022 #!/usr/bin/env python3 import os import random from Crypto.Util.number import * from flag import flag directions = "LRUD" SOLUTION_LEN = 64 def toPath(x: int): s = bin(x)[2:] if len(s) % 2 == 1: s = "0" + s path = "" for i …

Securinets CTF Quals 2019 | RSA/Encoding error

#SecurinetsCTFQuals2019 https://ctftime.org/task/7876 You need to learn how to handle transmission error. Hint: every information counts Flag format : Securinets{flag} Author:BlueWhale https://www.ctfsecurinets.com/files/134e7de088a4b63ab2…

RaR CTF 2021 | rotoRSA

#rarctf2021 from sympy import poly, symbols from collections import deque import Crypto.Random.random as random from Crypto.Util.number import getPrime, bytes_to_long, long_to_bytes import sys def build_poly(coeffs): x = symbols('x') retur…

Quadratic residuosity problem

和訳すると「平方剰余問題」? ある が与えられたときに が の平方剰余か、すなわち、なるが存在するかを判定する問題。通常 で、不明 なんか難しいらしい。(直感的には平方剰余である数とそうでない数の数に偏りがあるような気がするが、その実1 : 1) 当…

PlaidCTF2021 | leaky block cipher

#good_challenges_2021 #PlaidCTF2021 import flag import hashcash import secrets from Crypto.Cipher import AES def gf128(a, b): a = int.from_bytes(a, byteorder="big") b = int.from_bytes(b, byteorder="big") R = 128 P = sum(1 << x for x in [R,…

Layer7 CTF | Child Coppersmith

from Crypto.Util.number import bytes_to_long flag = "LAYER7{CENSORED}" p = random_prime(2^512) q = random_prime(2^512) N = p * p * q e = 0x10001 piN = p * (p-1) * (q-1) d = inverse_mod(e, piN) m = bytes_to_long(flag) ct = pow(m, e, N) asse…

HITCON CTF 2017 | Secret Server

SanDiego CTF 2021 | Encrypted Communications

Goldwasser-Micali cryptosystem

確率的公開鍵暗号方式 で、その難しさは Quadratic residuosity problemに基づく(ので結局素因数分解の困難性に基づく) XORに関する準同型性を持っていて、暗号文 に対して、 を復号したときに が得られる https://eprint.iacr.org/2007/177.pdf ? 原理 Qu…

Fword CTF 2021 | login

#fwordctf2021

EllipticCurve

関連ページ 位数がSmoothな楕円曲線のとき: Pohlig-Hellman Attack 楕円曲線/6点からパラメータを復元する properties 2素数 と について、 のとき、 (つまり任意の について) これは Frobenius trace が0になっている https://eprint.iacr.org/2020/001.…

CyberSecurityRumble | HashFun

from secret import FLAG def hashfun(msg): digest = [] for i in range(len(msg) - 4): digest.append(ord(msg[i]) ^ ord(msg[i + 4])) return digest print(hashfun(FLAG)) # [10, 30, 31, 62, 27, 9, 4, 0, 1, 1, 4, 4, 7, 13, 8, 12, 21, 28, 12, 6, 60…

Crypto CTF 2021 | Rima

#cryptoctf2021 #!/usr/bin/env python from Crypto.Util.number import * from flag import FLAG def nextPrime(n): while True: n += (n % 2) + 1 if isPrime(n): return n f = [int(x) for x in bin(int(FLAG.hex(), 16))[2:]] f.insert(0, 0) for i in r…

Crypto CTF 2020 | AMSTERDAM

#!/usr/bin/env python3 from Crypto.Util.number import * from functools import reduce import operator from secret import flag, n, k def comb(n, k): if k > n : return 0 k = min(k, n - k) u = reduce(operator.mul, range(n, n - k, -1), 1) d = r…

CakeCTF 2022 | Rock Door

#CakeCTF2022 from Crypto.Util.number import getPrime, isPrime, getRandomRange, inverse, long_to_bytes from hashlib import sha256 import os import secrets def h(s: bytes) -> int: return int(sha256(s).hexdigest(), 16) q = 1395951349381371256…

Boneh Durfee Attack

Wiener's_Attackをやるくらいならこれをやれ。 のときからがわかる という行列に対してLLLをやるといい感じになるし、普通にcoppersmithでといても良い def boneh_durfee(e, N): s = floor(sqrt(N)) M = Matrix([[e, s], [N, 0]]) Mred = M.LLL() D = [abs(M…