반응형
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 |