BOF 기초공부중

2018. 1. 9. 00:390x04 pwnable/윈도우즈 어플리케이션 취약점 분석

728x90

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