ipwn
[LOB(Lord Of Buffer overflow)] orc -> wolfman 본문
이번 단계는 orc 단계이다.
바로 접속하고 파일들을 살펴보겠다.
기본적으로 wolfman파일과 wolfman.c코드가 있다.
바로 코드를 읽어보도록 하겠다.
코드를 보면 저번 코드와 완전 유사하다. 하지만 버퍼의 시작부터 40byte는 memset을 통해 0으로 바꿔줘버렸다.
즉 buffer의 첫 부분에다가 shellcode를 박아놓고 return address를 buffer의 첫 주소로 바꿔서 shellcode를 실행하는 것이
불가능하다는 말이다. 하지만 우리는 이번에도 저번에 풀었던 방식인 buffer의 뒷 공간을 이용해서 푼다면
전혀 상관이 없을 것이다. 즉 저번 문제와 payload가 거의 일치하는 수준일 것이다.
일단 copy file을 segmentation fault를 일으켜서 core dump를 가져와보겠다.
성공적으로 core dump를 가져왔다. 한 번 core dump로 메모리값을 확인해보겠다.
buffer의 값이 4byte(SFP) + 4byte(return address)만 빼고 memset함수로 인해 전부 0으로 초기화된 것을 확인할 수 있다.
하지만 우리는 return address의 뒷 공간을 사용할 것이므로 nop의 위치 중 아무곳이나 대충 찔러넣어주면 될 것이다.
즉 우리가 작성할 payload는 dummy*44 + 0xbffffa10(임의의 nop의 위치) + NOP(\x90)*200 + shellcode가 될 것이다.
한 번 copy file에 넘겨주고 제대로 실행이 되는지 확인해보자.
제대로 shell이 가져와졌다. 이제 원본 파일에 payload를 실행시키고 권한이 상승된 shell을 가져오겠다.
성공적으로 shell을 가져왔다. wolfman으로 가는 password는 love eyuna이다.
'Write up > LOB' 카테고리의 다른 글
[LOB(Lord Of Buffer overflow)] darkelf -> orge (0) | 2018.01.17 |
---|---|
[LOB(Lord Of Buffer overflow)] wolfman -> darkelf (0) | 2018.01.16 |
[LOB(Lord Of Buffer overflow)] goblin -> orc (0) | 2018.01.14 |
[LOB(Lord Of Buffer overflow)] cobolt -> goblin (0) | 2018.01.14 |
[LOB(Lord Of Buffer overflow)] gremlin -> cobolt (0) | 2018.01.14 |