분류 전체보기 65

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

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