목록War Game (174)
tmxklab
1. 문제 nc svc.pwnable.xyz 30025 1) mitigation 확인 2) 문제 확인 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { _QWORD *v4; // rax int i; // [rsp+0h] [rbp-20h] int fd; // [rsp+4h] [rbp-1Ch] setup(argc, argv, envp); solve_pow(); puts("Shellcode executioner"); fd = open("/dev/urandom", 0); if ( fd != -1 ) { read(fd, key, 0x7FuLL); close(fd); printf("Input: "); re..
1. 문제 nc svc.pwnable.xyz 30024 1) mitigation 확인 2) 문제 확인 이름을 입력하고 캐릭터를 선택한다. 이후에 어떤 값을 넣으면 이름을 출력하고 종료된다. 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { size_t v3; // rax unsigned int v5; // [rsp+0h] [rbp-10h] unsigned int v6; // [rsp+4h] [rbp-Ch] unsigned __int64 v7; // [rsp+8h] [rbp-8h] v7 = __readfsqword(0x28u); setup(argc, argv, envp); motd_select_c..
1. 문제 nc svc.pwnable.xyz 30023 1) mitigation 확인 2) 문제 확인 name을 저장하고 수정하고 출력할 수 있는 프로그램인 것 같다. 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // eax int i; // [rsp+Ch] [rbp-14h] int j; // [rsp+10h] [rbp-10h] int v7; // [rsp+18h] [rbp-8h] int v8; // [rsp+1Ch] [rbp-4h] setup(argc, argv, envp); while ( 1 ) { while ( 1 ) { print_menu(); v3 = read_int..
1. 문제 nc svc.pwnable.xyz 30022 1) mitigation 확인 2) 문제 확인 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { setup(argc, argv, envp); puts("PvP - Programmatically vulnerable Program"); while ( 1 ) { print_menu(); switch ( (unsigned __int64)(unsigned int)read_int32() ) { case 0uLL: return 0; case 1uLL: if ( dword_6026A8 ) short_append(); else puts("Message is..
1. 문제 nc svc.pwnable.xyz 30021 1) mitigation 확인 2) 문제 확인 3) 코드흐름 파악 (참고로, 변수 이름을 조금 수정했음) 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { setup(argc, argv, envp); init_login(); puts("Web bookmarks."); while ( 1 ) { print_menu(); switch ( (unsigned __int64)(unsigned int)read_long() ) { case 0uLL: return 0; case 1uLL: printf("Password: "); if ( password == (int)read_..
1. 문제 nc svc.pwnable.xyz 30019 1) mitigation 확인 2) 문제 확인 Read와 Write 2개의 메뉴가 보이며 Read에서는 어떤 주소에 있는 값을 읽는 것 같고 Write는 어떤 주소에 값을 쓰는 것 같다. 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // eax const char *v5; // rdi char *s; // [rsp+10h] [rbp-10h] setup(argc, argv, envp); puts("Read Write Sleep Repeat."); do { while ( 1 ) { while ( 1 ) { print_menu..
1. 문제 nc svc.pwnable.xyz 30018 1) mitigation 확인 2) 문제 확인 인사했는데 안받아줬다 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { setup(argc, argv, envp); printf("> "); read(0, &input, 0x404uLL); fclose(&input); return 0; } read를 통해 input에 0x404byte만큼 입력 값을 받음 fclose(input) 전역변수) input : 0x601260 2. 접근방법 fsop(file stream oriented programming)를 통해 익스 FSOP를 위한 fclose()..
1. 문제 nc svc.pwnable.xyz 30017 1) mitigation 확인 2) 문제 확인 message에 값을 저장하고 2번 메뉴를 통해 출력할 수 있으며 1번 메뉴를 통해 수정할 수 있다. 하지만 3번메뉴를 선택하면 아무런 출력이 없다. 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { int v3; // eax char v5; // [rsp+10h] [rbp-30h] unsigned __int64 v6; // [rsp+38h] [rbp-8h] v6 = __readfsqword(0x28u); setup(argc, argv, envp); puts("Message taker."); p..
1. 문제 nc svc.pwnable.xyz 30015 1) mitigation 확인 2) 문제 확인 3) 코드흐름 파악 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { setup(argc, argv, envp); initialize_game(); printf("Name: "); read(0, cur, 0x7FuLL); while ( 1 ) { print_menu(); switch ( (unsigned __int64)(unsigned int)read_int32() ) { case 0uLL: return 0; case 1uLL: (*((void (**)(void))cur + 17))(); break; case 2u..
tcache개념을 공부하고 처음 tcache관련 문제를 풀어보았다. tcache에서 DFB를 포함한 여러 오류 검증 코드가 빠져있어 exploit이 쉬운 것 같다. 해당 문제는 tcache poisoning공격 기법을 사용하여 풀었다. 1. 문제 nc ctf.j0n9hyun.xyz 3041 1) mitigation 확인 이번엔 mitigation이 모두 걸려있다. 2) 문제 확인 메뉴가 총 5개가 보인다. (추가, 수정, 삭제, 확인, 종료) 3) 코드 흐름 확인 3-1) main() int __cdecl main(int argc, const char **argv, const char **envp) { alarm(0x3Cu); setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin..