CTF
-
[DiceCTF 2021] babyropCTF/WRITEUP 2021. 2. 6. 12:59
Disassembly 디스어셈블리 undefined8 main(void) { char *s; write(1, "Your name: ", 0xb); gets(&s); return 0; } gets로 인해 스택 버퍼 오버플로우가 발생한다. Return-to-csu RTC를 이용해 gets와 write의 라이브러리 주소를 구하자. 알아낸 주소를 바탕으로 라이브러리 버전을 알아낸 후, system과 binsh 문자열의 주소를 구해 system("/bin/sh")를 호출하면 문제를 해결할 수 있다. Code 더보기 from pwn import * binary = "./babyrop" lib = "./libc6_2.31-0ubuntu9.2_amd64.so" server = "dicec.tf" port = 31924..
-
[0x41414141 CTF] externalCTF/WRITEUP 2021. 1. 27. 16:27
Disassembly 디스어셈블리 문제를 보면 별다른 설명 없이 라이브러리와 바이너리 파일이 있다. undefined8 main(void) { void *buf; puts("ROP me ;)"); printf(0x40201c); read(0, &buf, 0xf0); clear_got(); return 0; } main 함수는 puts, printf, read, clear_got를 차례대로 호출하고, read에서 스택 버퍼 오버플로우가 발생한다. void clear_got(void) { memset(reloc.puts, 0, 0x38); return; } clear_got 함수는 reloc.puts부터 0x38바이트 길이를 초기화한다. 초기화되는 부분은 got 영역 전체이다. 재할당된 라이브러리 함수들의 ..
-
x64 Buffer OverflowCTF/HackCTF 2021. 1. 21. 01:44
Disassembly 디스어셈블리 undefined8 main(undefined8 argc, char **argv) { char **var_120h; int64_t var_114h; int64_t var_4h; var_114h._0_4_ = (undefined4)argc; func_0x00400508(0x400741, (int64_t)&var_114h + 4); var_4h._0_4_ = func_0x004004e0((int64_t)&var_114h + 4); func_0x004004e8("Hello %s\n", (int64_t)&var_114h + 4); return 0; } cutter가 디컴파일을 제대로 못하길래 pwngdb를 이용했다. 따라서 main() 에서 호출되는 세 함수는 차례로 scanf..
-
내 버퍼가 흘러넘친다!!!CTF/HackCTF 2021. 1. 21. 01:15
Disassembly 디스어셈블리 undefined4 main(void) { char *s; setvbuf(_reloc.stdout, 0, 2, 0); printf("Name : "); read(0, name, 0x32); printf("input : "); gets(&s); return 0; } 코드 영역의 name 위치에 0x32만큼 입력받고, gets를 통해 스택 버퍼 오버플로우가 발생하는 코드이다. RET Overwrite 스택 버퍼 오버플로우가 발생하므로 RET Overwrite을 시도해보자. return address를 덮을 gadget이 필요한데, 주소 name을 알고 있으므로 name에 쉘코드를 넣고 덮어쓰면 문제를 풀 수 있다. Code 더보기 from pwn import * binary..
-
Problemset 문제 모음CTF/PWNABLE 2021. 1. 21. 00:45
Syscall [HackCTF] Register Writeup [pwnable.tw] orw Writeup Buffer Overflow [HackCTF] Basic_BOF #1 [HackCTF] Basic_BOF #2 [HackCTF] Poet [HackCTF] j0n9hyun's secret Writeup [HackCTF] Beginner_Heap Writeup Format String Bug [HackCTF] Basic_FSB [HackCTF] Gift [HackCTF] You are silver [0x41414141 CTF] The Pwn Inn Writeup RET Overwrite [HackCTF] 내 버퍼가 흘러넘친다!!! [HackCTF] x64 Buffer Overflow [HackCTF]..
-
Basic_BOF #1CTF/HackCTF 2021. 1. 21. 00:31
Disassembly 디스어셈블리 undefined4 main(void) { undefined auStack60 [4]; char *s; int32_t iStack20; uint32_t var_ch; undefined *puStack12; int32_t var_4h; puStack12 = &stack0x00000004; iStack20 = 0x4030201; fgets(auStack60, 0x2d, _reloc.stdin); printf("\n[buf]: %s\n", auStack60); printf("[check] %p\n", iStack20); if ((iStack20 != 0x4030201) && (iStack20 != -0x21524111)) { puts("\nYou are on the right..
-
int_overflowCTF/XCTF 2021. 1. 21. 00:08
Disassembly 디스어셈블리 undefined4 main(void) { char **ppcVar1; char *pcStack48; int32_t *piStack44; undefined4 uStack36; undefined auStack32 [12]; int32_t iStack20; int32_t var_ch; undefined *puStack12; int32_t var_4h; puStack12 = &stack0x00000004; piStack44 = (int32_t *)0x0; pcStack48 = _reloc.stdin; setbuf(); piStack44 = (int32_t *)0x0; pcStack48 = _reloc.stdout; setbuf(); piStack44 = (int32_t *)0..