2018. 1. 9. 00:39ㆍ0x04 pwnable/윈도우즈 어플리케이션 취약점 분석
BOF 기초 공부 요약
1. 취약한 프로그램 생성
2. immunity debugger pattern create
3. 취약한 프로그램 실행
4. Ollydbg 실행 (cmd에서 에러 후 Debug옵션)
5. EIP 추출
6. Immunity debugger pattern offset eip값
7. 정확히 버퍼로부터 ret의 정확한 위치 추출
immunity debugger에서 패턴을 생성하는 이유
(pattern_create_offset)
직접 만들지 않은 프로그램은 예측이 힘들다.
즉, 정확히 계산하기 어려우니 패턴을 만든다.
패턴을 만들어서 넣게 되면 리턴 값에 특정한
값이 들어가게 되고,
이 고유한 값들 중 하나가 걸리게 되고
리턴 값을 offset에 전달하면 몇번째 위치에서
overflow가 발생했는지 알려준다.
명령어
!mona pattern_create 120
설명 : 120바이트의 패턴을 생성한다.
명령어를 입력하면 pattern.txt에 패턴이 들어가게 되는데
이 텍스트 파일의 위치는 immunity debugger 기본 설치 경로다.
해당 패턴을 복사한 후 이전에 만든 bof 프로젝트에
들어간다.
당연히 지금 만든 프로그램은 100바이트가 최대이니
120바이트를 입력하면 ret가 조작, 즉 eip가 조작되어 오류가 뜬다
이때 Debug라는 박스가 하나 보일텐데 이 박스가
ollydbg에서 Just In time debugging 때문에 생긴
박스다.
ollydbg에서 나온 EIP 값을 Immunity debugger의
!mona pattern_offset EIP값 하면 된다.
빨간색으로 출력되는 문장이 있다.
지금 출력되는 문장은 이것이었다.
Pattern Ad6A (0x41366441) found in cyclic pattern at position 108
그렇다면, 버퍼로부터 108번째 위치에 ret이 위치함을 알 수 있게 된다.
'0x04 pwnable > 윈도우즈 어플리케이션 취약점 분석' 카테고리의 다른 글
SEH 기초공부 1 (0) | 2018.01.09 |
---|---|
GS 기초 공부 1 (0) | 2018.01.09 |
BOF 기초공부 4 (1) | 2018.01.09 |
BOF 기초공부중 3 (0) | 2018.01.09 |
BOF 기초공부 중 2 (0) | 2018.01.09 |