hackctf
HackCTF Magic PNG
전에 프로젝트 진행하면서 PNG 구조 알아본 적이 있는데 덕분에 쉽게 풀었던 문제이다. Writeup File information 문제 파일을 다운 받고 압축을 해제하면 다음과 같이 png파일이 하나 있다. 이 파일은 깨져서 열어도 아무것도 볼 수 없는 파일이다. Solve 이 문제는 PNG format을 조금 알아보면 쉽게 풀 수 있는 문제이다. PNG의 시그니쳐 89 50 4E 47 0D 0A 1A 0A PNG에는 크게 세 청크가있다. IHDR (49 48 44 52) iHDR은 말 그대로 헤더 즉 PNG의 여러 메타 데이터가 저장된다. IDAT (49 44 41 54) 실제로 이미지에 대한 데이터가 저장된다. IEND (49 45 4E 44) 파일의 끝을 알려주는 청크 먼저 HxD or 010 e..
babyfsb (64bit fsb)
Writeup File information Code Main int __cdecl main(int argc, const char **argv, const char **envp) { char buf; // [rsp+0h] [rbp-40h] unsigned __int64 v5; // [rsp+38h] [rbp-8h] v5 = __readfsqword(0x28u); setvbuf(_bss_start, 0LL, 2, 0LL); puts("hello"); read(0, &buf, 0x40uLL); printf(&buf, &buf); return 0; } Main함수의 역할은 다음과 같다. read함수로 buf에 최대 64만큼 입력한다. printf함수로 buf를 출력한다 (fsb 발생) Exploit 이 문..
HackCTF Beginner_Heap
heap공부를 다시 시작할 겸 풀었던 문제들 write-up을 써보려 한다. 그중 가장 먼저 풀었던 hackctf beginner_heap writeup이다! Writeup File information Code Main void __fastcall __noreturn main(__int64 a1, char **a2, char **a3) { void *v3; // ST10_8 void *v4; // ST18_8 char s; // [rsp+20h] [rbp-1010h] unsigned __int64 v6; // [rsp+1028h] [rbp-8h] v6 = __readfsqword(0x28u); v3 = malloc(16uLL); *v3 = 1; *(v3 + 1) = malloc(8uLL); v4 =..