목록War Game (174)
tmxklab
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. 문제 1) mitigation확인 2) 문제 확인 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { __int64 v3; // rax int v4; // [rsp+4h] [rbp-Ch] unsigned __int64 v5; // [rsp+8h] [rbp-8h] v5 = __readfsqword(0x28u); setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); std::operator
1. 문제 1) mitigation확인 2) 문제 확인 3) 코드흐름 파악 3-1) main() int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { int v3; // eax char buf; // [rsp+0h] [rbp-10h] unsigned __int64 v5; // [rsp+8h] [rbp-8h] v5 = __readfsqword(0x28u); setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); while ( 1 ) { while ( 1 ) { menu(); read(0, &buf, 8uLL); v3 = atoi(&buf); if ( v3 != 3 ) br..
1. 문제 1) mitigation확인 2) 문제 확인 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { char buf; // [rsp+0h] [rbp-10h] unsigned __int64 v4; // [rsp+8h] [rbp-8h] v4 = __readfsqword(0x28u); setvbuf(_bss_start, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); while ( 1 ) { menu(); read(0, &buf, 4uLL); switch ( atoi(&buf) ) { case 1: create_heap(); break; case 2: edit_hea..
이번에는 Free된 Chunk를 검증하지 않아 Double Free Bug가 발생하게 되어 fastbin dup를 이용한 문제풀이를 하겠다. 1. 문제 1) mitigation확인 2) 문제 확인 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { char buf; // [rsp+10h] [rbp-20h] unsigned __int64 v4; // [rsp+28h] [rbp-8h] v4 = __readfsqword(0x28u); init(argc, argv, envp); while ( 1 ) { menu(); read(0, &buf, 8uLL); switch ( (unsigned __int64)(..