Security_study/Pwnable_study5 [포너블/Mitigation] NX bit & ASLR 1.개념NX bit와 ASLR은 리눅스의 보호기법 중 하나입니다. 먼저 NX bit같은 경우는 No eXecute bit로 쓰기에 사용되는 영역과 실행에 사용되는 영역을 분리하는 기술입니다. 만약 이 두 권한이 같은 곳에 있다면 해당 위치에 셸 코드를 주입하고 해당 위치로 RET할 시 셸코드가 실행되며 취약점이 발생하게 됩니다. 두 번째로 ASLR같은 경우는 Address Space Layout Randomization의 약자로 바이너리가 실행될 때마다 라이브러리, 스택, 힙 영역의 주소가 랜덤화되어 RTL과 같은 공격에 대한 방어를 하는 보호기법입니다. 2. NX bit앞서 나온대로 실행권한을 제거하는 보호기법이라고 생각하면 됩니다.글로만 보면 잘 안와닿을수 있으니 실제로 메모리를 한 번 확인해보겠습니.. 2024. 7. 23. [포너블/Mitigation] Stack Canary 1. 개념스택 카나리란 버퍼오버플로우를 막기 위한 보호기법 중 하나로 반환 주소를 보호하는 기법입니다.이전 글에서 BOF에 대해서 다루었는데 전과 같이 Return주소를 내가 원하는 값으로 변조하면 실행 흐름을 조작할 수 있는 취약점이 발생하게 됩니다. 그리하여 이를 막기 위하여 버퍼와 RET사이에 임의의 값을 삽입하고 함수의 에필로그 부분에서 카나리의 변조 여부를 확인하여 변조되었다면 프로그램을 강제 종료시키게 됩니다. 2. 카나리카나리는 기본적으로 컴파일할 때 해제하지 않으면 기본으로 포함되게 됩니다. (이전 BOF에서는 이해를 돕기위해 컴파일을 할 때 -fno-stack-protector라는 옵션을 포함하여 카나리를 제외하고 컴파일 하였습니다.) 카나리는 먼저 TLS(Thread Local Stor.. 2024. 7. 22. [포너블/stack] Stack Buffer OverFlow 1. 개념버퍼오버플로우, 흔히 BOF라고부르는 취약점이며 포너블을 공부한다면 가장 기초가 되며 역사가 오래된 취약점입니다.해당 취약점은 말 그대로 스택의 버퍼에서 발생하는 오버플로우 현상을 뜻합니다. 스택에 있는 지역변수는 스택버퍼, 힙에 할당된 메모리 영역은 힙 버퍼라고 하고 해당 글에서 다루는 스택 버퍼오버플로우뿐만아니라 물론 힙 버퍼에서도 일어나는 힙 버퍼 오버플로우도 존재하게 됩니다. 힙에 해당되는 내용은 추후에 다루도록 하고 해당 글에서는 스택에서 발생하는 스택 버퍼오버플로우를 다루도록 하겠습니다. 2. BOF앞에서도 언급했듯이 버퍼 오버플로우는 버퍼가 넘치는 것을 의미합니다. 예제 코드를 통해 한 번 살펴보겠습니다.#include #include void get_shell(){ s.. 2024. 7. 21. [hand-ray]x86_handray 연습 저번 글에 이어서 32비트인 x86의 handray도 해야하여서 x86문제도 하나 handray를 진행해보았습니다 이번 문제도 마찬가지로 생각보다 handray가 어려워서 그런지 완벽히 해석은 다음에 다시 진행해보겠습니다. 일단 전체적인 main함수의 어셈블리 코드는 이렇게 생겼습니다. 일단 파일을 실행하면 이런식으로 결과값이 나오게 되는데 starts!라는 문자가 출력되고 그 뒤에 값을 입력받는게 그 값이 잘못된 값이 입력되면 Wrong!이라는 문구가 출력되는 것 같고 두 문자가 조건에 맞다면 아무것도 출력되지않는? 그런 느낌인 것 같습니다. 일단 첫 부분은 프롤로그 부분을 한후 ebx값을 인자로 사용하여 get_pc_thunk.bx라는 함수를 호출하는데 구글에 검색해보니 PIE기법에 쓰이는 함수라고 .. 2023. 9. 13. [hand-ray] x64_handray 연습 물론 보안 공부를 본격적으로 시작한건 이번이 처음이지만 약 2달동안 공부를 해보면서 느낀점은 포너블이나 리버싱같은 보안을 공부하다보면 어셈블리어를 보는 상황이 굉장히 많이 나오게 됩니다.. 특히 이번에 처음으로 공부해본 포너블 같은 경우는 GDB(GNU Debugger)라는 디버거를 통해서 어셈블리어를 직접 하나하나 볼 기회가 굉장히 많이 있었습니다. (다른 분야는 아직 본격적으로 공부를 해본적이 없어서 정확한 정보는 추후에 공부를 하여서 또 업로드 해보겠습니다.) 위의 사진은 포너블을 공부하였을 때 풀었던 디렉토리에 있는 문제 중 하나를 GDB를 통해 Main함수의 어셈블리어의 일부를 확인 한 사진입니다. 제목에서 언급했듯이 이번글에서는 Handray라는것을 연습하는 시간을 가져 볼 것 입니다. Han.. 2023. 9. 10. 이전 1 다음