Memory Corruption: Stack Buffer Overflow # 서론 모리스 웜: 스택 버퍼 오버플로우 공격을 통해 전파됨 CVE details에 따르면 스택 버퍼 오버플로우를 포함한 오버플로우 취약점은 이제까지 18,081개가 발견되어 전체에서 3번째로 많이 발견되었으며, 2019년에도 1,247개가 추가로 발견됨 # 스택 버퍼 오버플로우 1. 버퍼 오버플로우 1.1 버퍼 버퍼(Buffer): 데이터가 목적지로 이동되기 전에 보관되는 임시 저장소 데이터가 처리속도가 다른 두 장치가 있을 때, 이 둘 사이에 오가는 데이터를 임시로 저장해두는 것은 일종의 완충 작용을 함 예를 들어 키보드에서 데이터가 입력되는 속도보다 데이터를 처리하는 속도가 느린 프로그램이 있음 이런 키보드를 사용하는데 별도..
Return Address Overwrite Exploit Tech: Return Address Overwrite에서 실습하는 문제입니다. # 문제 분석 - Return Address Overwrite 오버플로우 발생 시 반환 주소(Return Address)를 조작하여 실행흐름을 바꾸는 기법 - checksec - 함수 목록 get_shell 함수를 이용하면 쉘을 획득할 수 있을 것임 - main 함수 scanf는 길이 검증을 하지 않기 때문에 buffer의 크기를 넘어 스택 영역을 덮어 쓸 수 있을 것임 %s는 문자열을 입력받을 때 사용하는 것으로, 입력의 길이를 제한하지 않으며, 공백인 문자로 띄어쓰기, 탭, 개행 문자 등이 들어올 때까지 계속 입력을 받는다는 특징이 있음 정확히 n개의 문자만 입력..
basic_exploitation_001 이 문제는 서버에서 작동하고 있는 서비스(basic_exploitation_001)의 바이너리와 소스 코드가 주어집니다. 프로그램의 취약점을 찾고 익스플로잇해 “flag” 파일을 읽으세요. “flag” 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 플래그의 형식은 DH{…} 입니다. # 문제 분석 - checksec 확인 canary가 없어 ret address 조작하여 프로그램의 실행흐름 변조 가능 - 함수 목록 확인 read_flag를 통해 플래그를 획득할 수 있을 것 같음 - main 함수 buffer의 크기가 0x80이므로 dummy(0x80) + ebp(0x4) + ret(0x4) 로 페이로드를 구성하면 프로그램의 흐름을 조작할 수 ..
[문제] A Very Big Sum | HackerRank Calculate the sum of the values in an array that might exceed the range of int values. www.hackerrank.com [문제 설명] - 매우 큰 수의 합을 리턴하는 함수를 만들어라 > return type은 long type임 [문제 풀이] - c++에서 입력받는 파라미터가 vector뿐이여서 수의 개수를 구하는 것이 문제 → vector이름.size()를 통해 벡터에 저장된 수들의 개수를 얻을 수 있음 - for문을 반복하며 long 타입의 변수에 값을 더해나감 [코드] long aVeryBigSum(vector ar) { long a=0; for(int i=0;i