env 사용불가, buf 사용불가, argv[1] 사용불가, argv[2]이상 사용불가,
우리가 쓸 수 있는 곳은 한 곳 남아있다. argv[0]이다.
argv[0]은 파일 명이므로 파일명을 쉘코드로 만들고 argv[0]가 들어있는 주소를 ret로 덮어보자.
argv[0]가 들어있는 주소를 찾았다. 그러면 쉘코드를 이름으로 하여 링크를 걸어보자.
여기서 \x2f는 /를 의미하므로 \x2f가 없는 쉘코드를 사용해야 한다.
다음과 같이 만든 후 디버거를 켜서 이름의 위치를 찾아보자.
0xbfffff66에 이름이 있는것을 확인할 수 있다.
Segmentation fault가 발생했고 core 파일이 생겼다. 확인해 보자.
주소를 0xbfffff92사용하여 다시 해보니 쉘이 따졌다.
원래 파일에서도 성공적으로 쉘을 땄다.
다음 단계로 넘어가보자.
10. vampire -> skeleton (0) | 2020.03.10 |
---|---|
09. troll -> vampire (0) | 2020.03.10 |
07. darkelf -> orge (0) | 2020.03.09 |
06. wolfman -> darkelf (0) | 2020.03.09 |
05. orc -> wolfman (0) | 2020.03.09 |
댓글 영역