목록War Game/HackCTF (44)
tmxklab
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)..
1. 문제 nc ctf.j0n9hyun.xyz 3027 1) mitigation 확인 2) 문제 확인 입력을 하고 이상한 값이 출력되면서 종료된다.(?) 3) 코드 흐름 확인 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { unsigned int i; // [rsp+8h] [rbp-88h] char s1; // [rsp+Ch] [rbp-84h] char src[64]; // [rsp+10h] [rbp-80h] char dest; // [rsp+50h] [rbp-40h] unsigned __int64 v8; // [rsp+88h] [rbp-8h] v8 = __readfsqword(0x28u); setvbuf(_bs..
1. 문제 nc ctf.j0n9hyun.xyz 3026 1) mitigation 확인 2) 문제 확인 레지스터가 출력되고 값을 입력받음(진짜로 레지스터에 값을 넣는건지는 이따가 디버깅하면서 확인) 3) 코드 흐름 확인 3-1) main() int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { alarm(5u); setvbuf(stdout, 0LL, 2, 0LL); build(); } unsigned int alarm(unsigned int seconds) 설명 : seconds초 후에 프로세스에 SIGALRM 시그널 전송 build()실행 3-2) build() void __noreturn build() { __int6..
해당 문제는 RTC(Return To Csu)기법에 관한 문제이다. 1. 문제 nc ctf.j0n9hyun.xyz 3025 1) mitigation 확인 2) 문제 확인 입력을 한 번 받고 끝난다. 3) 코드 흐름 확인 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { char buf; // [rsp+0h] [rbp-40h] setvbuf(stdin, 0LL, 2, 0LL); write(1, "Hey, ROP! What's Up?\n", 0x15uLL); return read(0, &buf, 0x200uLL); } read(0, &buf, 0x200)에서 bof발생 2. 접근방법 일단 bof취약점이 발생해서 ret..
1. 문제 nc ctf.j0n9hyun.xyz 3024 1) mitigation 확인 이번에는 stripped된 파일임 2) 문제 확인 입력을 받고 끝난다. 3) 코드 흐름 확인 3-1) main() __int64 __fastcall main(__int64 a1, char **a2, char **a3) { char buf; // [rsp+0h] [rbp-10h] setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); read(0, &buf, 0x78uLL); return 0LL; } buf변수[rbp-0x10]에 0x78까지 입력받을 수 있음 → bof발생 2. 접근방법 bof를 통해 ret를 조작할 수 있다. system() 및 binsh문자열을 찾기 ..
1. 문제 nc ctf.j0n9hyun.xyz 3023 1) mitigation 확인 2) 문제 확인 system@plt는 주어졌다고 출력하면서 입력 값을 받을 수 있다. 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("Easy RTL ha? You even have system@plt!\n", 1uLL, 0x27uLL, stdout); fflush(stdin); fgets(&s, 64, stdin); return 0; ..
1. 문제 nc ctf.j0n9hyun.xyz 3021 1) mitigation 2) 문제 확인 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { vulnerable_function(); write(1, "Hello, World!\n", 0xEu); return 0; } 3-2) vulnerable_function() ssize_t vulnerable_function() { char buf; // [esp+0h] [ebp-88h] return read(0, &buf, 0x100u); } read함수에서 bof발생 -> ret건드릴 수 있음 2. 접근 방법 공격 프로세스) bof를 수행하여 wri..