환경변수 사용불가, buf 사용불가, argv 전체 사용불가.
모두 사용불가이므로 쉘코드를 어디에 넣어야할지 모르겠다.
우선 main함수가 끝나기 전의 모두 초기화된 메모리를 확인해보자.
전부 다 0으로 초기화 되었지만, 마지막에 초기화가 안된 값을 찾을 수 있었다. 이 값이 무엇을 의미하는지 확인해보자.
이 값은 argv[0]와 동일한 값이다. argv가 저장되는 영역은 위에서 이미 다 초기화 됐는데,
초기화되지 않은 영역에있는 값이 argv[0]값과 같은 걸 알았으니 argv[0]를 쉘코드로 바꿔보자.
쉘코드로 바꾼 후 초기화 하기 전의 모습이다. 값들을 다 확인할 수 있다.
main함수 ret직전에 bp를 걸어서 확인해본 결과 저 부분을 제외하고는 모두 다 초기화되는게 맞다.
이제 저 주소를 ret으로 덮어써보자.
성공하였다.
다음 단계로 넘어가보자.
12. golem -> darknight (0) | 2020.03.10 |
---|---|
11. skeleton -> golem (0) | 2020.03.10 |
09. troll -> vampire (0) | 2020.03.10 |
08. orge -> troll (0) | 2020.03.09 |
07. darkelf -> orge (0) | 2020.03.09 |
댓글 영역