처음 버퍼오버플로우라는 개념을 알았을때는 너무 쉽지만 힘이없어보였다.
처음에 나는 이 버퍼오버플로우가 변수의 값을 조작하는 용도로만 생각했기 때문이다.
지금은 그 힘과 영향력에 대해서 조금씩 알아가고 있는중이다.
버퍼 오버플로(영어: buffer overflow) 또는 버퍼 오버런(buffer overrun)은 메모리를 다루는 데에 오류가 발생하여 잘못된 동작을 하는 프로그램 취약점이다.
버퍼오버 플로우의 정의는 다음과 같다.
처음보는 사람들은 감의 안 올 것이다.
버퍼오버플로우를 공부하기 위해선 메모리 구조부터 공부해야한다.
프로그래밍한 결과가 변수들이 메모리에 어떤 순서로 어떤 방식으로 올라가는지 알아야 한다.
hackerschool.org 라는 사이트에서 버퍼오버플로우의 기본에 대해서 배울 수 있다.
버퍼오버플로우의 기초에 대해서 알았다면
쉘에 대해 알아야 한다.
버퍼오버플로우를 이용하면 자신의 권한보다 높아진 상태의 쉘을 획득할 수 있다.
즉 쉘을 이용하면 권한이 낮은 상태로 시스템에 들어가 자신의 권한을 높일 수 있다.
이렇게 자신의 권한을 루트로 만들면 백도어를 만드는 것으로 마무리를 한다.
이제 자신이 루트가 된 상황에서 외부인이 루트권한을 갖게 하는 파일을 만들 수 있다.
그 파일을 만들어 놓고 다시 시스템에 침입할때 실행 시키면 쉽게 다시 루트권한을 딸수 있는 것이다.
지금까지 버퍼오버플로우와 시스템해킹에 관한 간단한 개요를 작성하였다.
큰그림을 그리는데 도움이 되었으면 한다.
'시스템 > 시스템 해킹' 카테고리의 다른 글
glibc malloc.c의 free함수 분석 약간의 exploit관점(작성중) (0) | 2017.02.09 |
---|---|
glibc malloc.c의 malloc함수 분석 약간의 exploit관점 (0) | 2017.02.09 |
별건 아니고 malloc.c (0) | 2017.01.30 |
angr 정리 (0) | 2017.01.25 |
pwndbg. (0) | 2017.01.19 |