목록분류 전체보기 (285)
tmxklab

1. 문제 nc ctf.j0n9hyun.xyz 3039 1) mitigation 확인 stripped된 파일 걸려있는 mitigation이 없고 rwx가 가능한 세그먼트가 존재 2) 문제 확인 입력 값을 받고 종료 3) 코드 흐름 확인 3-1) main() __int64 __fastcall main(__int64 a1, char **a2, char **a3) { char s; // [rsp+0h] [rbp-10h] Init(); fgets(&s, 44, stdin); return 0LL; } fgets로 s[rbp-0x10]에 44bytes까지 입력 받을 수 있음 → bof 2. 접근방법 일단, 걸려있는 mitigation도 존재하지 않고 bof가 발생하니 쉘 코드를 넣어서 실행시키는 방법으로 생각해 보..

1. 문제 nc ctf.j0n9hyun.xyz 3037 1) mitigation 확인 2) 문제 확인 입력 값을 받고 다시 출력해준다. 3) 코드 흐름 확인 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { char buf; // [rsp+0h] [rbp-20h] unsigned __int64 v5; // [rsp+18h] [rbp-8h] v5 = __readfsqword(0x28u); Init(argc, argv, envp); puts("hello"); read(0, &buf, 0x19uLL); printf(&buf); return 0; } read로 buf[rbp-0x20]변수에 0x19만큼 입력을 받음 pri..

1. 문제 nc ctf.j0n9hyun.xyz 3035 1) mitigation 확인 stripped된 파일 2) 문제 확인 총 3개의 메뉴가 보인다. 3) 코드 흐름 확인 3-1) main() void __fastcall __noreturn main(__int64 a1, char **a2, char **a3) { int v3; // eax sub_400846(a1, a2, a3); while ( 1 ) { menu(); v3 = (char)input(); switch ( v3 ) { case '2': view(); break; case '3': remove(); break; case '1': make(); break; } } } 3-2) input() __int64 input() { unsigned _..

1. 문제 nc ctf.j0n9hyun.xyz 3034 1) mitigation 확인 2) 문제 확인 입력 값을 받고 종료 3) 코드 흐름 확인 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { char s; // [rsp+0h] [rbp-10h] setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); fwrite("Impossible RTL ha? Nothing for you!\n", 1uLL, 0x24uLL, stdout); fgets(&s, 256, stdin); return 0; } fgets()를 통해 s[rbp-0x10]변수에 256bytes만큼 입력을 ..

stdout을 이용한 libc주소 leak & fastbin dup 1. 문제 nc ctf.j0n9hyun.xyz 3033 1) mitigation 확인 2) 문제 확인 3) 코드 흐름 확인 3-1) main() int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { int v3; // [rsp+Ch] [rbp-4h] Init(); while ( 1 ) { while ( 1 ) { menu(); v3 = input_number(argc, argv); if ( v3 != 1 ) break; Malloc(); } if ( v3 != 2 ) exit(0); Free(); } } 3-2) Malloc() unsigned __in..

1. 문제 nc ctf.j0n9hyun.xyz 3032 1) mitigation 확인 2) 문제 확인 3) 코드 흐름 확인 3-1) 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); return 0; } buf에 0x40만큼 입력을 받을 수 있음 printf(&buf)에서 fsb 취약점 발생..

1. 문제 nc ctf.j0n9hyun.xyz 3031 1) mitigation 확인 stripped된 파일이라 함수들에 대한 심볼 정보가 없다. main함수를 직접 찾아야 한다. (start() → __libc_start_main() → main()) 2) 문제 확인 실행하여 이름을 입력하면 종료되고 flag, top_secret파일이 생성된다. 안에 아무 내용도 없다.. 3) 코드 흐름 확인 3-1) main() __int64 sub_4009C9() { int v0; // edx int v2; // [rsp+Ch] [rbp-4h] sub_40FDD0(off_6CA748, 0LL, 2LL, 0LL); sub_40FDD0(off_6CA740, 0LL, 2LL, 0LL); sub_40FDD0(off_6CA..

__malloc_hook을 이용한 익스 1. 문제 nc ctf.j0n9hyun.xyz 3030 1) mitigation 확인 2) 문제 확인 3) 코드 흐름 확인 3-1) main() int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { int v3; // [rsp+8h] [rbp-8h] int v4; // [rsp+Ch] [rbp-4h] Init(); while ( 1 ) { while ( 1 ) { menu(); v4 = input_number(); if ( v4 != 1 ) break; Malloc(v3++); } if ( v4 == 2 ) { Free(); } else { if ( v4 != 3 ) exit(0)..

1. 문제 nc ctf.j0n9hyun.xyz 3029 1) mitigation 확인 2) 문제 확인 입력 값을 받자마자 종료된다. 3) 코드 흐름 확인 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { char s; // [rsp+0h] [rbp-10h] setvbuf(_bss_start, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); fwrite("Hard RTL ha? You don't even have fflush@dynstr!\n", 1uLL, 0x30uLL, _bss_start); fgets(&s, 64, stdin); return 0; } s변수[rbp-0x10]에 fge..

Heap Feng Shui기법 이용 1. 문제 nc ctf.j0n9hyun.xyz 3028 1) mitigation 확인 2) 문제 확인 3) 코드 흐름 확인 3-1) main() int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { char v3; // [esp+3h] [ebp-15h] int v4; // [esp+4h] [ebp-14h] int v5; // [esp+8h] [ebp-10h] unsigned int v6; // [esp+Ch] [ebp-Ch] v6 = __readgsdword(0x14u); setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); alarm(0x3Cu)..