ABOUT ME

https://github.com/chongin12 chongin12@naver.com

Today
Yesterday
Total
  • 버퍼오버플로우 정리
    해킹/버퍼오버플로우 2016. 7. 17. 18:22
    반응형

    <버퍼 오버 플로우>


    1. Buffer Overflow란?

    버퍼 오버 플로우 공격은 오래전에 발표된 기술이지만 아직까지도 사용되고 있는 공격 기법이다.


    2. Buffer, 버퍼란?

    버퍼란 쉽게 말하면 연산 하기 전에 미리 입력받은 것을 메모리에 일시적으로 저장하는 것을 말한다.

    대부분의 프로그램에선 이 버퍼를 스택에다가 저장해놓는데, 이것 때문에 버퍼오버플로우 공격이 가능한 것이다.


    3. Buffer Overflow의 동작 원리

    버퍼오버플로우는 준비된 버퍼보다 더 많은 데이터를 쓸 때에 발생하게 된다. 이 때, 스택에서 준비된 버퍼 다음에 있는 것이 base pointer, 그 다음에 있는 것이 return address이다. 


    이것들을 모두 조작 하고 그 다음에 있는 쉘 코드를 이용해서 명령을 내릴 수 있다. 


    아래 그림처럼 말이다.



    base pointer, return address는 4byte이고, shell 코드는 24byte이다. 잘 계산해서 버퍼오버플로우 공격을 하면 될 것 같다.

    이때, 정렬방식은 little endian 정렬방식이다.


    #little endian

    예 : 12345678

    우리가 사용하기 쉽도록 할 때 : (그대로)12345678

    컴퓨터가 연산하기 쉽도록 할 때 : (2개씩 끊어서 반대로)78563412


    (아직 버퍼오버플로우와 어셈블리어에 대한 개념이 안잡힌것 같아서 나중에 해킹을 좀 더 배운 다음에 다시 정리하도록 하겠습니다.)

    반응형

    댓글

Designed by Tistory.