Return to Shellcode 문제 풀이1. 취약점 확인1. C언어먼저 checksec 명령어로 취약점을 확인해보자$ checksec r2s[*] '/workspaces/codespaces-blank/Dreamhack/r2s/r2s' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX unknown - GNU_STACK missing PIE: PIE enabled Stack: Executable RWX: Has RWX segmentsx64 아키텍처 에 canary 가 적용된 것을 확인할 수 있다. C언어를 확인해보자.// Name: r2s.c/..
스택 카나리 (Stack Canary)1. 스택 카나리1. 스택 카나리 (Stack Canary) 란?BOF 공격으로부터 반환 주소를 보호하기 위해 스택 카나리 (Stack Canary) 보호기법이 생겼다. 스택 카나리는 함수의 프롤로그에서 스택 버퍼와 반환 주소 사이에 임의의 값을 삽입하고, 함수의 에필로그에서 해당 값의 변조를 확인하는 보호 기법이다.카나리 값의 변조가 확인되면 프로세스는 강제로 종료 된다. BOF 공격에서 반환 주소를 덮으려면 반드시 카나리를 먼저 덮어야 하므로카나리를 모르는 공격자는 반환 주소를 덮을 때 카나리 값을 변조하게 된다. 2. 카나리 정적 분석1. 스택 카나리 비활성화// Name: canary.c#include int main() { char buf[8]; rea..
basic_exploitation_001 문제 풀이1. 코드 확인 (취약점)1. C 코드 확인파일의 보호기법은 아래와 같다Ubuntu 16.04Arch: i386-32-littleRELRO: No RELROStack: No canary foundNX: NX enabledPIE: No PIE (0x8048000) 파일을 실행하면 바로 입력을 받는 것을 알 수 있다. $ ./basic_exploitation_001 aaaaaaaaaaaaaaaaaaaaaaaa 이제 C 코드를 확인해보자#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1);}void initiali..
basic_exploitation_000 문제풀이1. 코드 확인 (취약점)1. C 코드 확인파일을 실행하면 buf 의 주소를 출력하고 입력을 받는 것을 알 수 있다.$ ./basic_exploitation_000buf = (0xffffc3a8) checksec 명령어로 보호기법을 확인해보자.$ checksec basic_exploitation_000[*] '/workspaces/codespaces-blank/basic_exploitation_000/basic_exploitation_000' Arch: i386-32-little RELRO: No RELRO Stack: No canary found NX: NX unknown - GNU_STACK missin..