본문 바로가기
Security/Pwnable

LOB Level 12 golem

by J0DEV 2021. 8. 10.
반응형

golem -> darknight 로 접속합니다.

코드를 살펴보면...

 

strncpy(buffer, src, 41);

 

40바이트만 할당되어 있는데 1바이트 더 주어지네요.

 

1바이트의 오버플로우를 해야할듯 합니다.

위에 힌트내용에 FPO를 검색해보니

 

Frame Pointer Overwriting

이라는 Fake Ebp의 하위 개념인 공격 기법이 있었습니다.

 

자세한 내용 참고 - http://s2kiess.blog.me/220070346721

 

 

gdb로 분석해보면

 

 

 

 

 

서브함수의 leave에 브레이크를 걸고

 

r `python -c 'print "A"*40 + "B"'`

 

로 실행하여 보면

 

 

0xbffffa42를 보면 뒤에 1바이트가 B로 된걸 알수 있습니다.

 

 

버퍼 앞에는 버퍼를 가르키는 0xbffffa74가 들어있습니다.

 

에필로그 과정에서

 

0xbffffa74로 점프할 수 있게 해야함으로

 

leave, ret 에서 esp 가 + 4

 

pop 으로 + 4 가 되므로

 

0xbffffa74에서 8을 빼면 되므로

 

 

0xbffffa6c 가 되겠네요.

 

 

그럼 nop + shellcode 40바이트 + 6c를 해봅시다.

 

되는군요 ㅎㅎ

 

 

 

근데 실제 파일에다가 공격하면 Segment fault 가 뜨는군요 ㅠㅠㅠ

 

core 덤프를 생성하여

 

메인을 봅시다...

 

(tmp 에 복사해서 확인했습니다.)

 

 

0xbffffa54에서부터 시작되네요

 

그러면 0xbffffa4c로 공격해봅시다.

 

 

 

 

 

 

 

 

 

반응형

'Security > Pwnable' 카테고리의 다른 글

LOB Level 14 bugbear  (0) 2021.08.10
LOB Level 13 darkknight  (0) 2021.08.10
LOB Level 11 skeleton  (0) 2021.08.10
LOB Level 10 vampire  (0) 2021.08.09
LOB Level 9 troll  (0) 2021.08.09