실습 환경 : 칼리 리눅스 2018.04
보통 root로 칼리 리눅스를 로그인을 하는데
버퍼 오버플로우로 인해 사용자 권한에서 관리자 권한으로 상승을 실습을 할것이기 때문에
사용자 계정을 생성한다.
adduser를 통해 사용자 계정 생성
su 를 통해 생성한 사용자로 로그인을 한다.
GDB 실습 (디버거 실습)
먼저
vi test1.c 라는 파일을 생성하여
아래 그림과 같은 소스를 작성한다 .
gcc로 컴파일을 한다
이때 -g 옵션을 넣어서 디버깅 옵션을 추가한다.
이제 준비는 맞췄다.
gdb 라는 프로그램으로 해당 프로그램을 디버깅을 할것이다.
list 를 써서 test1으로 잘 했는지 확인 한번 쏵 해주자
컴파일을 할때 -g 옵션을 하였기 때문에 소스코드 또한 바이너리 안에 포함되서 보이는것이다 .
만약에 어셈블 언어로 보고 싶다면 (main 함수)
disass main
라고 타이핑을 하면
이제 프로그램을 실행해보면
run 을 통해 프로그램을 실행할수 있는데
run AA 라고 타이핑을 해보니 AA 가 출력이 잘되는것을 볼수 있다.
확인 차원에서 list를 쳤는데
흠 이유는 모르겠지만 나갔다 다시 실행을 해보자
quit 을 통해 gdb를 나갈수 있다.
이제 다시 list를 쳐보자
디버깅을 하기위해서는 9줄 모두 실행을 시키는것이 아니라 중간에 멈춰서 값의 변화를 봐야 한다.
이때 우리는 6번째 줄에 있는 string copy 하는 부분을 멈춰보자
break 6
프로그램을 실행시켜보자
보아하니 파라미터값은 보아하니 argc=2 , argv=0xbffff7c4 로 들어갔고
argument (우리가 입력한 스트링(AA) )은 0xbffff7c4로 잘들어갔다
그리고 6번쨰 줄에서 딱 멈춤
현재 버퍼값을 확인해보면
string copy 후에는 어떻게 변할까?
next 라고 타이핑을 하면 그다음으로 넘어간다
그리고 버퍼를 다시 확인 해보니 AA 값이 들어간것을 확인할수 있다
참고로 step 이라고 함수 안으로 들어가서 확인을 하는 명령어가 있는데
지금 현재 상황에서는 printf 함수 안에 내용을 확인을 하는것인데
실제로 라이브러리 function 같은것을 찾을수 없어서 살짝 에러가 나곤한다.
그리고 info register 라는 명령어는
레지스터를 확인을 하는곳인데
여러가지 레지스터 내용을 확인을 할수 있다
그중 eip는 현재 실행중인 레지스터로 main에 31번째 줄에 있는 주소에 명령어가 실행중인것을 알수 있다.
레지스터를 보고 예를 들어 스택 정보를 보고 싶으면 스택이 대략 20byte 정도 이니깐
프로그램을 마져 실행시키려면
cont 라고 있는데 다음 브레이크 포인트 까지 마져 실행시킨다 라는 뜻인데
우리는 더이상 브레이크 포인트가 없으니 끝까지 실행을 시키는것이다.
이제 다시 나갔다가
똑같이 브포 (브레이크 포인트)를 똑같이 걸고
이번에는 8자리 보다 더 많이 넣어서 실행을 해보자
next를 누르면
segmentation fault 가 되면서 프로그램이 종료 되는것을 확인할수 있다.
왜냐면 메모리 주소를 접근을 할수 없었기 때문이다.
스택은 어떻게 변했는지 확인해보자
엄...... 스택을 변한 내용을 보고 싶었는데
데이터양을 오버플로우 나기직전까지만 데이터를 넣어보고 이것저것 다 해 봤지만 오버플로우로 인한
스택 확인은 힘들것 같다.
아무튼 데이터를 받아 드릴수 있는 한계치 보다 더 데이터를 넣었을때 오버플로우로 인한 프로그램
오작동을 확인 할수 있었다
//// 추후 수정 /////
버퍼오버플로우 실습 3
버퍼오버플로우 실습 1 과 비슷한 소스 내용이나 차이점은 서버함수가 추가가 된다 이전에 버퍼오버플로우 실습1 에서 못봤던 스택 같은 상태 정보 등을 볼수 있을것이다. 버퍼 오버 플로우 2 보
adm1n1.tistory.com
버퍼오버플로우 실습 3에서 스택을 확인하면서 실습을 하는 과정있다
////추후 수정 끝/////
'보안 > 시스템 보안' 카테고리의 다른 글
버퍼 오버플로우 6 실습 (0) | 2022.05.14 |
---|---|
버퍼 오버 플로우 실습 5 (0) | 2022.05.02 |
버퍼 오버플로우 실습 4 (0) | 2022.05.02 |
버퍼오버플로우 실습 3 (0) | 2022.04.30 |
버퍼 오버 플로우 2 보안 환경 설정 (0) | 2022.04.23 |