CTF writeups
[SSTF CTF 2022] CUSES
뒤늦게 라이트업 쓰느라 사진 찍어둔게 하나도 없어서 운영진분들이 올려주신 깃허브 소스코드 참고해서 작성합니다... https://github.com/SSTF-Office/SamsungCTF 1. Investigation 문제 설명을 읽어보니 쿠키는 쓸데 없고 취약하다면서 AES 암호화를 이용하여 커스텀 제작한 세션을 만들었으니 자신은 이제 안전하다고 한다. 그리고 문제 풀이에 필요한 웹페이지를 제공해주었다. 들어가보면 다음과 같은 로그인 화면이 나온다. Register 버튼을 눌러도 관리자만이 계정을 추가할 수 있다면서 아무것도 되지 않았기 때문에 페이지 소스코드에 힌트를 남겨놓지 않을까 해서 살펴보았더니 아니나 다를까 게스트 계정에 대한 아이디/패스워드를 알려주고 있었다. 주어진 게스트 계정으로 로그인..
[n00bzCTF2022] RSA-OOPS
1. Investigation RSA-OAEP 가 너무 복잡해서 RSA-OOPS 라고 불리는 자신만의 RSA Original Optimal Padding Scheme 을 만들었다고 합니다. 접속 제공 정보 : nc 159.65.232.9 10333 이 CTF 에서는 특이하게 디스코드에서 운영진들이 각 문제에 대한 소스코드를 제공해주고 있어서 디스코드 서버에 접속해 별도로 받아와야 했습니다. >> challenge.py #!/usr/local/bin/python # # Polymero # # Imports from Crypto.Util.number import getPrime, inverse import os, random # Local imports with open('flag.txt', 'rb') as..
[Cyber Apocalypse CTF 2022] MOVs Like Jagger
1. Investigation 문제에서 주어진 파일의 압축을 풀면 3 개의 파일이 나옵니다. >> app.py from flask import Flask, request, jsonify from flask.templating import render_template from navigation_system import calculatePointsInSpace, checkDestinationPoint from utils import generateLocation app = Flask(__name__) E = None Q, nQ = None, None P, nP = None, None FLAG = "HTB{--REDACTED--}" @app.route('/', methods=['GET', 'POST']) d..
[Cyber Apocalypse CTF 2022] How The Columns Have Turned
1. Investigation >> source.py import os with open('super_secret_messages.txt', 'r') as f: SUPER_SECRET_MESSAGES = [msg.strip() for msg in f.readlines()] def deriveKey(key): derived_key = [] for i, char in enumerate(key): previous_letters = key[:i] new_number = 1 for j, previous_char in enumerate(previous_letters): if previous_char > char: derived_key[j] += 1 else: new_number += 1 derived_key.app..
[Cyber Apocalypse CTF 2022] The Three-Eyed Oracle
1. Investigation >> chall.py from Crypto.Cipher import AES from Crypto.Util.Padding import pad import random import signal import subprocess import socketserver FLAG = b'HTB{--REDACTED--}' prefix = random.randbytes(12) key = random.randbytes(16) def encrypt(key, msg): msg = bytes.fromhex(msg) crypto = AES.new(key, AES.MODE_ECB) padded = pad(prefix + msg + FLAG, 16) return crypto.encrypt(padded)...
[Cyber Apocalypse CTF 2022] Jenny From The Block
1. Investigation >> chall.py from hashlib import sha256 from Crypto.Util.Padding import pad, unpad import signal import subprocess import socketserver import os allowed_commands = [b'whoami', b'ls', b'cat secret.txt', b'pwd'] BLOCK_SIZE = 32 def encrypt_block(block, secret): enc_block = b'' for i in range(BLOCK_SIZE): val = (block[i]+secret[i]) % 256 enc_block += bytes([val]) return enc_block de..
[picoCTF 2022] NSA Backdoor
1. Investigation Hint#1 : Look for Mr. Wong's whitepaper... His work has helped so many cats! 2. Solution 오픈소스로 구현해놓은 디피-헬먼 알고리즘에 누군가 몰래 백도어를 설치했다고 합니다. 힌트를 보아하니 Wong 씨의 논문을 찾아보라고 하네요. (How to Backdoor Diffie-Hellman : https://eprint.iacr.org/2016/644.pdf) (아래에서 소개할 알고리즘에 대한 이론이 담겨있음) 일단 주어진 파일부터 살펴보겠습니다. >> gen.py #!/usr/bin/python from binascii import hexlify from gmpy2 import * import math im..
[picoCTF 2022] Sum-O-Primes
1. Investigation Hint#1 : I love squares :) 문제를 살펴보니 RSA 에 대한 믿음이 막강해서 소수들의 곱 뿐만 아니라 합도 제공해주겠다고 합니다. 힌트#1 에서는 제곱을 사랑한다네요. (?) 2. Solution 문제에서 주어진 파일들을 확인해보겠습니다. >> gen.py #!/usr/bin/python from binascii import hexlify from gmpy2 import mpz_urandomb, next_prime, random_state import math import os import sys if sys.version_info < (3, 9): import gmpy2 math.gcd = gmpy2.gcd math.lcm = gmpy2.lcm FLAG..
[picoCTF 2022] Sequences
1. Investigation Hint#1 : Google "matrix diagonalization". Can you figure out how to apply it to this function? 문제 설명을 살펴보니 자신이 만들어 놓은 “선형 재귀 함수”를 빠르게 동작하도록 만들어 Flag 를 획득하라고 합니다. 힌트#1 에서는 "matrix diagonalization" 을 구글링해서 어떻게 함수에 적용할 수 있을지 생각해보라고 하네요. 2. Solution 주어진 파일부터 확인해보겠습니다. import math import hashlib import sys from tqdm import tqdm import functools ITERS = int(2e7) VERIF_KEY = "96cc5f3b4..
[picoCTF 2022] Very Smooth
1. Investigation Hint#1 : Don't look at me... Go ask Mr. Pollard if you need a hint! 문제 설명을 살펴보니 안전한 소수를 까먹었다며 인생을 위험하게 사는게 좋다고 합니다... 힌트#1 에서는 날 보지 말고 Mr. Pollard 에게 힌트를 물어보라네요. 2. Solution 먼저 문제에서 제공된 파일들을 각각 확인해봅니다. >> gen.py #!/usr/bin/python from binascii import hexlify from gmpy2 import * import math import os import sys if sys.version_info < (3, 9): math.gcd = gcd math.lcm = lcm _DEBUG = ..