wolfman의 소스코드를 한번 보도록 하겠습니다.

orc의 소스코드와 상당히 유사합니다.

차이점이라면 마지막에 buffer hunter라고 해서 memset(buffer, 0, 40)으로 buffer를 초기화해주는 코드가 추가 되었습니다.

buffer hunter가 적용 되어 있으니, buffer에 쉘코드를 넣는 방법은 안될듯 합니다.

그렇다면 orc를 풀었을 때와 마찬가지로 argv[2]에 쉘코드를 넣는 방식을 통하여 문제를 풀도록 하겠습니다.

orc와 동일한 방법으로 ebp를 구하고 페이로드를 작성했습니다.

(goblin->orc 풀이 : http://grayfieldbox.tistory.com/entry/LOBLord-Of-BufferOverflow-goblin-orc)


작성한 페이로드를 입력해 보겠습니다.

ret 주소가 0xbffffbf0이면 될줄 알았는데 뜨질 않았네요.


core dump가 생성 되었으니 core dump를 이용해 문제를 해결하겠습니다.

core dump를 이용해 디버깅을 열었더니 0xbffffc04에 있는 값이 무엇인지 알수 없다고 나오네요.

그럼 0xbffffc04의 값이 무엇인지 확인해 봐야겠죠.

확인결과 ret가 들어있는 부분이었네요. 그 뒤부분으로 NOP 썰매가 들어가 있는 것을 확인 할 수 있습니다. 그럼 ret에 넣어준 값을 NOP이 들어있는 주소로 변경해 주면 될듯 하네요.


Ret0xbffffc14로 바꿔 주도록 하겠습니다.

빙고 쉘이 떳습니다. Setuid가 걸린 wolfman이 아닌 복사한 파일에 해서 wolfman권한이 없을테니 원본 wolfman에 입력하여 비밀번호를 획득하도록 하겠습니다.

정상적으로 wolfman의 쉘을 획득하였습니다. 비밀번호는 love eyuna이네요.

+ Recent posts