zer0ptsCTF 2023 - decompile_me Writeup 간단해보이는 문제인데, 약간의 함정을 파놨다. 먼저 RC4_setkey 로 넘기는 key와 sbox는 사용하는 척 사용 안한다. 위처럼 매개변수를 사용하지 않는다. memcmp 도 직접 구현하였고, 매개변수로 넘긴 data를 사용 안하고 다른 값과 비교한다. encrypt 함수는 아래와 같고 sbox는 아래와 같이 고정되는데, 를 통해 추출한다. 정연산 역연산: Flag : zer0pts{d0n'7_4lw4y5_7ru57_d3c0mp1l3r} CTF Writeup 2023.07.19
zer0ptsCTF 2023 - mimikyu Writeup 문제 바이너리와 두 개의 라이브러리 파일을 준다. strip 되지 않았다. mimikyu main 을 보자 일단 flag 길이가 40자인 것은 알 수 있다. ResolveModuleFunction 일부: 매개변수로 받은 값이 해시값이고, 해시값을 통해 특정 라이브러리의 특정 함수를 호출하는 것을 알 수 있다. LoadLibrary 후 ResolveModuleFunction 에 라이브러리와 해시값을 넘겨 원하는 함수를 호출하는 것을 유추할 수 있다. 실제로 call 하는 곳에 브포 걸고 확인하면 라이브러리 내의 함수를 호출한다. 첫 ResolveModuleFunction 호출은 gmpz_init 임을 알 수 있다. (r10) 브포걸고 계속 continue 해서 호출되는 함수들을 확인한다. srand 로 시.. CTF Writeup 2023.07.19
zer0ptsCTF 2023 - fvm Writeup vm 문제로 보인다. 여러 vm 문제를 풀어보면서 터득한 루틴이 있다. instruction 분석 disassembler 간단 제작 후 전체 코드 뽑아보기 동적 실행으로 조건문/반복문 판별하며 흐름 분석 각 instruction 들이 모인 코드 덩이들의 목적이나 역할 분석 - 함수화 정연산 짜기 복호화 코드 짜기 1. instruction 분석 모든 연산을 fpu 위에서 한다. fpu 에 대해 아예 몰랐었는데, 이번에 많이 알게 되었다. 먼저 fpu 는 8개의 st register를 stack 구조로 관리한다. 그리고 top 을 이동시키며 push/pop 을 구현하기 때문에 8번 push/pop 하면 제자리로 돌아오게 된다. 예를 들어보자면 위 그림과 같다. top 을 기준으로 st0 부터 st1 st2.. CTF Writeup 2023.07.18
2023 Codegate UNIV division writeup some of Reversing chall 1. BackTo1986 - Reversing ( 839 p ) 커널 파일이 주어진다. gunzip initramfs.cpio.gz mkdir tmp && cd tmp cpio -idmv < ../initramfs.cpio main 바이너리가 주어진다. qemu로 start.sh 명령을 실행시키면 다음 화면이 뜬다. qemu-system-x86_64 -kernel ./bzImage -initrd ./initramfs.cpio.gz -vga std --append "console=ttyS0 console=tty0" 블록을 깨는 핑퐁게임임을 알 수 있다. 바이너리를 분석해보자. 문자열로 유추할 수 있는 함수부터 살펴보면 UI를 그려주는 함수임을 알 수 있다. 이 함.. CTF Writeup 2023.06.18
Defcon 2023 Qualifier - kkkkklik writeup I solved this problem with my team "Budaejjigae". TL; DR 더보기 1. Encryption Algorithm when click a picture 1337 times, we can encrypt "flag{this_is_a_fake_flag_find_the_real_o" with Blowfish Encryption. and key is set by user input. 2. Encrypted flag when click the picture 1333337 times, can get encrypted flag. 3. Get Key In case 133337, there are many function call by dynamic function table. the.. CTF Writeup 2023.05.31
2022 Incognito CTF Writeup 1. Mic Check Flag : INCO{L3t's_G0!!} 2. Forensic 1) Bondee 주어진 jpg 파일에 비밀번호로 추정되는 문자열과 하단부에 PK 포맷 파일이 있다. 해당 비밀번호로 zip 파일 압축 해제하면 pdf 파일이 존재한다. Ctrl + A 로 전체 선택해보면 하단에 안 보이는 글자가 있음을 알 수 있고, 이를 복사하여 확인하면 파이썬 코드가 나온다. number_list = [73, 78, 67, 79, 123, 105, 110, 99, 111, 95, 115, 119, 108, 117, 103, 95, 50, 48, 50, 51, 125] text_list = [] for i in range(len(number_list)): text_list.append(chr(num.. CTF Writeup 2023.03.26
2023 ACSC CTF Writeup - warmup + ngo 24문제 중 6문제 풀었다. 웜업 문제를 푼 다음 easy-ssti를 보다가, 깃헙 소스를 다 뒤져도 방법이 없어보여서 포기하고 다음 날 ngo를 풀었다. 1. Merkle Hellman #!/usr/bin/env python3 import random import binascii def egcd(a, b): if a == 0: return (b, 0, 1) else: g, y, x = egcd(b % a, a) return (g, x - (b // a) * y, y) def modinv(a, m): g, x, y = egcd(a, m) if g != 1: raise Exception('modular inverse does not exist') else: return x % m def gcd(a, b):.. CTF Writeup 2023.02.26
2022 Iris CTF 일요일 잠깐 시간내서 씨텦 참여 metacalc - __lookupGetter__('__proto__').constructor 를 통한 RCE Nonces and Keys - 첫 블록의 원문이 파일 시그니처임을 이용한 IV 구하기 1. metacalc (Web) metacalc 라는 node module 에서 RCE 취약점을 찾는 건데, 약간의 코드 패치가 이루어졌다. 아래는 metacalc/lib/sheet.js 이다. 'use strict'; const metavm = require('metavm'); const wrap = (target) => new Proxy(target, { get: (target, prop) => { if (prop === 'constructor') return null; +.. CTF Writeup 2023.01.08