CTF
-
RTL_CoreCTF/HackCTF 2021. 2. 1. 02:53
Disassembly 디스어셈블리 undefined4 main(void) { int32_t iVar1; char acStack36 [4]; char *s; undefined *puStack12; int32_t var_4h; puStack12 = &stack0x00000004; setvbuf(_reloc.stdout, 0, 2, 0); puts("코어 파일에 액세스중입니다...\n패스코드를 입력해주세요"); printf("Passcode: "); gets(acStack36); iVar1 = check_passcode(acStack36); if (iVar1 == _hashcode) { puts("코드가 일치하구나. 좋아, 다음 단서를 던져주지"); core(); } else { puts(0x8048881);..
-
Random KeyCTF/HackCTF 2021. 2. 1. 02:24
Disassembly 디스어셈블리 void main(void) { undefined4 uVar1; undefined8 extraout_RDX; int64_t iVar2; uint32_t *puVar3; uint64_t uVar4; int64_t in_FS_OFFSET; uint32_t var_10h; uint32_t var_ch; int64_t var_8h; var_8h = *(int64_t *)(in_FS_OFFSET + 0x28); setbuf(_reloc.stdout, 0); var_ch = 0; var_10h = 0; uVar1 = time(0); srand(uVar1); var_ch = rand(); puts(0x400928); puts("======= 인증 프로그램 ======"); puts(..
-
PoetCTF/HackCTF 2021. 2. 1. 01:26
Disassembly 디스어셈블리 void main(undefined8 argc, char **argv) { undefined8 in_R8; undefined8 in_R9; char **var_10h; int64_t var_4h; setvbuf(_reloc.stdout, 0, 2, 0, in_R8, in_R9, argv); puts( "\n**********************************************************\n* 우리는 2018년의 시인(poet)을 찾고 있습니다. *\n* 플래그상을 받고 싶다면 지금 한 줄의 시를 쓰세요! *\n**********************************************************\n" ); do { while( t..
-
g++ pwnCTF/HackCTF 2021. 1. 31. 22:31
Disassembly 디스어셈블리 undefined4 main(void) { vuln(); return 0; } void vuln(void) { undefined4 uVar1; char *dest; int32_t var_1ch; int32_t var_18h; int32_t var_11h; int32_t var_9h; int32_t var_bp_4h; printf("Tell me something about yourself: "); fgets(&dest, 0x20, _reloc.stdin); std::string::operator=(char const*)(input, &dest); std::allocator::allocator()(&var_11h); std::basic_string::basic_string..
-
[0x41414141 CTF] The Pwn InnCTF/WRITEUP 2021. 1. 30. 23:55
Disassembly 디스어셈블리 undefined8 main(void) { int64_t iVar1; int64_t in_FS_OFFSET; int64_t canary; iVar1 = *(int64_t *)(in_FS_OFFSET + 0x28); ignore_me_init_buffering(); ignore_me_init_signal(); puts("Welcome to the pwn inn! We hope that you enjoy your stay. What\'s your name? "); vuln(); if (iVar1 != *(int64_t *)(in_FS_OFFSET + 0x28)) { // WARNING: Subroutine does not return __stack_chk_fail(); } ..
-
Basic_FSBCTF/HackCTF 2021. 1. 29. 00:43
Disassembly 디스어셈블리 undefined4 main(void) { int32_t var_4h; setvbuf(_reloc.stdout, 0, 2, 0); vuln(); return 0; } main()은 vuln()을 호출한다. void vuln(void) { char *format; char *var_408h; printf("input : "); fgets(&format, 0x400, _reloc.stdin); snprintf(&var_408h, 0x400, &format); printf(&var_408h); return; } vuln()은 fgets()로 문자열을 입력받고, snprintf()와 printf() 두 번에 걸쳐 포맷 스트링 버그가 발생한다. void flag(void) { p..
-
[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 영역 전체이다. 재할당된 라이브러리 함수들의 ..