ssp_001 이 문제는 작동하고 있는 서비스(ssp_001)의 바이너리와 소스코드가 주어집니다. 프로그램의 취약점을 찾고 SSP 방어 기법을 우회하여 익스플로잇해 셸을 획득한 후, “flag” 파일을 읽으세요. “flag” 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{…} 입니다. # 문제 분석 - checksec 확인 32bit 환경 canary 존재 NX enabled 이므로 스택 내 실행 권한 X - 소스코드 옵션 선택 F: box 배열에 내용을 입력할 수 있으며 이때 bof는 발생하지 않음 P: box 배열 내의 원소를 index로 접근할 수 있으며 이때 index에 대한 검증 과정이 없기 때문에 oob read 가능 E: name 배열에 내용을 입력..
Return to Library Exploit Tech: Return to Library에서 실습하는 문제입니다. # Review Return Address Overwrite: 반환 주소를 악성 함수의 주소로 덮어서 셸 획득 Stack Canary: 스택 프레임의 반환 주소 전에 랜덤한 카나리를 주입하여 반호나 주소를 덮기 어렵게 함 Return to Shellcode: 카나리를 우회하고, 셸 코드를 주입한 버퍼의 주소로 반환 주소를 덮어서 셸 획득 ASLR: 임의 버퍼의 주소를 알기 어렵게 함 NX: 각 세그먼트에 불필요한 실행권한을 제거함으로써 공격자가 임의 버퍼에 주입한 코드를 실행하기 어렵게 함 # 문제 분석 - Return to Library NX로 인해 공격자가 버퍼에 주입한 셸 코드를 실행하..
Return to Shellcode Exploit Tech: Return to Shellcode에서 실습하는 문제입니다. # 문제 분석 - Return to Shellcode 반환 주소를 shellcode가 저장된 곳으로 우회하여 프로그램의 실행 흐름을 조작하는 것 해당 문제는 카나리를 우회하고, 쉘 코드와 Return Address Overwrite를 이용하여 쉘을 획득할 수 있음 - Checksec 카나리가 적용되어 있음 - 소스코드 buf의 주소 및 rbp와 buf 사이의 주소 차이를 알려줌 스택 버퍼인 buf에 총 두 번의 입력을 받음 → 두 입력 모두에서 오버플로우 발생 // Name: r2s.c // Compile: gcc -o r2s r2s.c -zexecstack #include #incl..
Mitigation: Stack Canary # 들어가며 Return Address Overwrite: 스택의 반환 주소(Return Address)를 조작하여 실행 흐름을 획득하는 공격 기법 스택 카나리(Canary): 스택 버퍼 오버플로우로부터 반환 주소를 보호 함수의 프롤로그에서 스택 버퍼와 반환 주소 사이에 임의의 값을 삽입하고, 함수의 에필로그에서 해당 값의 변조를 확인하는 보호 기법 카나리 값의 변조가 확인되면 프로세스는 강제로 종료됨 스택 버퍼 오버플로우 반환 주소를 덮으려면 반드시 카나리를 먼저 덮어야 하므로 카나리 값을 모르는 공격자는 반환 주소를 덮을 때 카나리 값을 변조하게 됨 → 에필로그에서 변조가 확인되어 공격자는 실행흐름을 획득하지 못함 # 카나리의 작동 원리 1. 카나리 정적 ..