IMyoungho 2019. 2. 27. 16:54

혹시나 이상하거나 잘못된 것이 있다면 댓글 부탁드립니다.



이번 문제는 Vampire에서 Skeleton으로 가는 문제이다.

생각보다 쉬웠다ㅎㅎ 코드를 보자!

 음 모든 인자들을 초기화하는 코드가 보여진다.

하지만 걱정이 없던 이유는 저번에 문제를 풀다가 발견했던

유저영역 바로직전의 메모리값이었다.

참고 : https://xn--vj5b11biyw.kr/119





그렇기 때문에 우리는 argv[0] 값을 바꾸고 초기화하더라도

초기화되지않는 메모리를 알고 있었고 그 부분을 활용하기로 했다.





심볼릭 링크와 nop sled 그리고 쉘코드를 이용해서 진행하였다. 

뒤에도 nop을 준 이유는 혹시나 쓰레기값이 들어가서 쉘코드가 제대로 실행되지 않을까봐 넣어주었다.


역시나 초기화되지않은 우리가 넣어준 nop sled + shellcode 파일명이 들어있었다.

여기서 실수했던 것은 인자로 넘겨줄 ret 주소를 0xbfffff20으로 주었다..

\x20은 공백을 의미하기 때문에 제대로된 주소값으로 인식이 되지않았고

 쉘이 따지지 않았다..쩝.. 살짝 삽질했다.. ㅎㅎ

* Thanks to Py0zz1 *



그래서 0xbfffff30을 주어서 깔끔하게 쉘을 따냈다.



이제 복사본 skeleten이 아닌 skeleton파일에 심볼릭 링크를  다시 걸어주고~

위의 과정대로 공격을 진행하면~


짜잔~ 진짜 쉘을 딸 수 있게 된다.


다음 문제로~




반응형