Return to Library Exploit Tech: Return to Library에서 실습하는 문제입니다. # Review Return Address Overwrite: 반환 주소를 악성 함수의 주소로 덮어서 셸 획득 Stack Canary: 스택 프레임의 반환 주소 전에 랜덤한 카나리를 주입하여 반호나 주소를 덮기 어렵게 함 Return to Shellcode: 카나리를 우회하고, 셸 코드를 주입한 버퍼의 주소로 반환 주소를 덮어서 셸 획득 ASLR: 임의 버퍼의 주소를 알기 어렵게 함 NX: 각 세그먼트에 불필요한 실행권한을 제거함으로써 공격자가 임의 버퍼에 주입한 코드를 실행하기 어렵게 함 # 문제 분석 - Return to Library NX로 인해 공격자가 버퍼에 주입한 셸 코드를 실행하..
Background: Library - Static Link vs. Dynamic Link # 라이브러리 라이브러리는 컴퓨터 시스템에서, 프로그램들이 함수나, 변수를 공유해서 사용할 수 있게 함 대개의 프로그램은 서로 공통으로 사용하는 함수들이 많음 ex) printf, scanf, strlen, memcpy, malloc 등 많은 C 프로그래머들이 코드를 작성하면서 사용하는 함수 C언어를 비롯하여 많은 컴파일 언어들은 자주 사용되는 함수들의 정의를 묶어서 하나의 라이브러리 파일로 만들고, 이를 여러 프로그램이 공유해서 사용할 수 있도록 지원하고 있음 라이브러리를 사용하면 같은 함수를 반복적으로 정의해야하는 수고를 덜 수 있어 코드 개발의 효율이 높아짐 각 언어에서 범용적으로 많이 사용되는 함수들은 표준..
Return Address Overwrite Exploit Tech: Return Address Overwrite에서 실습하는 문제입니다. # 문제 분석 - Return Address Overwrite 오버플로우 발생 시 반환 주소(Return Address)를 조작하여 실행흐름을 바꾸는 기법 - checksec - 함수 목록 get_shell 함수를 이용하면 쉘을 획득할 수 있을 것임 - main 함수 scanf는 길이 검증을 하지 않기 때문에 buffer의 크기를 넘어 스택 영역을 덮어 쓸 수 있을 것임 %s는 문자열을 입력받을 때 사용하는 것으로, 입력의 길이를 제한하지 않으며, 공백인 문자로 띄어쓰기, 탭, 개행 문자 등이 들어올 때까지 계속 입력을 받는다는 특징이 있음 정확히 n개의 문자만 입력..