반응형
<Hint>
힌트를 확인해 보자 !
gets() 함수의 취약점을 이용하는 문제다.
gets() 함수는 입력받는 길이의 제한없이 입력가능하다.
이 때문에 str[256] 크기를 넘어서 데이터를 덮어 씌울 수 있게 된다.
기본적인 버퍼 오버플로우를 이용한 공격을 하라는 문제이다.
gdb를 이용하여 attackme를 확인해보자 !
위의 힌트에서 256byte만큼 char형 배열을 할당하는데,
확인해보니, 264byte만큼 스택에 공간을 할당한다.
gcc 버전에 맞춰 dummy 데이터까지 포함된 공간을 할당하게 된다.
스택공간의 주소를 확인해 보자!!
프로그램을 수행하여 AAAA를 입력하였다.
그리고 esp의 위치부터 확인을 해보니 A(아스키코드로 41)이 할당된 위치가
0xbffffa20 이었다.
거기서 264Byte 만큼 떨어진 위치는
0xbffffb28이 된다.
Buffer + Dummy = 264 Byte
SFP + RET = 8 Byte
총 272Byte만큼 입력한다 !
위와 같이 nop와 쉘코드 그리고 리턴 Address의 주소를 입력하고 실행한다.
위와 같은 공격코드를 작성한다.
작성한 코드를 컴파일하여 실행하면 문제가 풀리게 된다.!
반응형
'ETC > Security' 카테고리의 다른 글
[정보보호개론] Dos와 DDos (서비스 거부 공격) (0) | 2018.11.04 |
---|---|
[정보보호개론] 정보보안의 3가지 속성 (0) | 2018.11.04 |
Level 11 (0) | 2013.11.04 |
Level 10 - Share Memory(공유 메모리) (0) | 2013.11.04 |
Level 9 (0) | 2013.10.31 |