분류 전체보기 73

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

C++ 테트리스 게임 제작

때는 2022.12.29일 목요일 바킹독 선생님의 실전 알고리즘 강의 영상을 보던 중 C++ 공부 중인 해온이의 대결 신청 나도 C++ 익힐 겸 하기로 했다. 오랜만에 하루종일 앉아서 코드만 짠 것 같다. 이런 기분을 중학생 때 게임 만들 때 느꼈었는데, 고등학교 와서는 못 느꼈다. 노래 반복재생 - 코드짜기 - 버그 발생 - 노래 멈추고 디버깅 - 다시 노래 재생 시간은 대략 29일 하루종일 + 30일 반나절 정도 걸렸다. 클래스는 다음과 같이 나눴다 Tetromino / Tetris / TetrisUI / Display TetrisUI와 Display는 static method로 구성되어있고, TetrisUI는 미노 정보만 받아서 Display 내 함수를 호출하는 역할, Display 는 테트리스와 ..

Programming 2022.12.31