ipwn

[LOB(Lord Of Buffer overflow)] orc -> wolfman 본문

Write up/LOB

[LOB(Lord Of Buffer overflow)] orc -> wolfman

ipwn 2018. 1. 16. 23:04

이번 단계는 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이다.






Comments