해킹의 기본이 스택 오버플로우 취약점이라길래 해본다고 리눅스 받아서 코드 만들고 읔읔 했는데
도저히 안되길래 뭐 때문에 그런가 한참 찾으니 ... 최신 리눅스는 이제 스택 오버플로우로 뭐 하는게 안되는거라고 ... ㅠ.ㅠ
옛날 리눅스는 설치도 짜증나서 그냥 때려침 ^오^
해킹의 기본이 스택 오버플로우 취약점이라길래 해본다고 리눅스 받아서 코드 만들고 읔읔 했는데
도저히 안되길래 뭐 때문에 그런가 한참 찾으니 ... 최신 리눅스는 이제 스택 오버플로우로 뭐 하는게 안되는거라고 ... ㅠ.ㅠ
옛날 리눅스는 설치도 짜증나서 그냥 때려침 ^오^
스택 오버플로가 아니라 버퍼 오버플로. 둘은 전혀 다른 개념이야 ㅠ_ㅠ. 스택 오버플로는 해킹이랑 상관 없음.
버퍼 오버플로가 스택 상에 위치한 버퍼(지역 변수) 영역을 초월해서 Return Address라던가 그런 다른 값들을 건드려 프로그램의 실행 흐름을 해커가 원하는대로 바꾸는 공격이라면 스택 오버플로는 무한 재귀라던가 이런 식으로 계속 스택 공간을 소모해서 더 이상 쓸 스택 공간이 없는 오류 상태를 말하는 거임.
최신 리눅스에서는 스택 오버플로가 기본적으로 어렵지. DEP(Data Execution Prevention) 때문에. 그래서 해커들은 ROP(Return-oriented Programming) 방식으로 공격을 하지. 근데 그에 대해 대응책으로 또 나온게 ASLR(Address Space Layout Randomization)임. 창과 방패의 대결인데 거의 방패가 이겼다고 보면 됨. ASLR 때문에 많이 힘들어졌음.
미친. 글 제목 때문에 헷갈려서 나도 세번째 덧글에 스택 오버플로라고 적었네. 버퍼 오버플로.
스택에서 오버플로우가 일어나서 리턴어드레스를 덮어 씌우는 취약점이니까 스택 오버플로우라는거 아닌가?
아니라니깐... 좀 더 자세히 말하면 스택 오버플로를 감지하기 위해 윈도우에서 만들어 놓은 스택 한계 메모리 바깥의 Guard 페이지를 프로그램이 접근하려고 하면 나는 게 Stack Overflow 예외임. 리눅스에서는 딱히 그런 용어는 없고 그냥 Segmentation fault 오류만 나고.
http://ko.wikipedia.org/wiki/%\0EC%\08A%\0A4%\0ED%\083%\09D_%\0EC%\098%\0A4%\0EB%\0B2%\084%\0ED%\094%\08C%\0EB%\0A1%\09C
를 읽어 보렴.
아항
ST7 7 8.℃ ○M 8fjhf86n