전체 글
-
You are silverCTF/HackCTF 2021. 2. 1. 20:35
Disassembly 디스어셈블리 undefined8 main(void) { char *format; int32_t var_8h; int64_t var_4h; setvbuf(_reloc.stdout, 0, 2, 0); var_4h._0_4_ = 0x32; puts("Please enter your name"); fgets(&format, 0x2e, _reloc.stdin); printf(); var_8h = get_tier((uint64_t)(uint32_t)var_4h); printf((int64_t)var_8h); return 0; } main은 fgets로 입력받은 후 printf를 통해 포맷 스트링 버그가 발생한다. 이후 var_4h를 인자로 get_tier를 호출하고, get_tier의 반환값을..
-
GiftCTF/HackCTF 2021. 2. 1. 05:25
Disassembly 디스어셈블리 undefined4 main(void) { int32_t unaff_EBX; char *format; int32_t var_4h; __x86.get_pc_thunk.bx(); alarm(0x3c); setvbuf(**(undefined4 **)(unaff_EBX + 0x138e), 0, 2, 0); setvbuf(**(undefined4 **)(unaff_EBX + 0x138a), 0, 2, 0); setvbuf(**(undefined4 **)(unaff_EBX + 0x137e), 0, 2, 0); printf(unaff_EBX + 0x13e, binsh, *(undefined4 *)(unaff_EBX + 0x1382)); fgets(&format, 0x80, **(un..
-
Loot at meCTF/HackCTF 2021. 2. 1. 04:58
Disassembly 디스어셈블리 undefined4 main(void) { undefined4 uVar1; int32_t var_ch; int32_t var_4h; setvbuf(_stdout, 0, 2, 0); uVar1 = getegid(); __setresgid(uVar1, uVar1, uVar1); look_at_me(); return 0; } void look_at_me(void) { char *s; puts("Hellooooooooooooooooooooo"); gets((int32_t)&s); return; } gets로 인해 스택 버퍼 오버플로우가 발생한다. ROP NX가 켜져 있으므로 스택에 쉘코드 삽입을 통한 공격은 불가능하고, 라이브러리가 정적으로 링크되어 있기 때문에 Return-t..
-
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..