우왕!! 이번 단계 소스코드에 argv[1]만 쓸 수 있게 돼 있고 argv[1]을 0으로 초기화해버린다.
환경변수, buffer, argv[2]도 사용할 수가 없다. 그렇다면 argv[0]에 쉘 코드를 넣고 exploit을 시행하 보자.
심볼릭 링크를 이용해 argv[0]에 쉘 코드를 넣어보자.
그러나 [그림 1-2] 심볼릭 링크가 실패가 되었다. 실패 내용은 No such file or directory이다.
쉘 코드를 보면 \x2f라는 부분이 있다 이것은 '/'이다 여기서 '/' 이것은 경로를 의미하기 때문에 오류가 날 수밖에 없다.
쉘 코드에서 /bin/sh 이런 식으로 쉘을 실행해야 하기 때문에 '/'의 문자가 필요하다.
/bin/sh 부분을 인코딩해서 쉘 코드에 \x2f 문자가 안 나타나게 하면될 것 같다.
/bin/sh 문자를 0x30이라는 코드로 XOR 연산을 해서 쉘 코드를 만들 것이다.
[그림 1-3] 이렇게 XOR 연산을 이용하여 쉘 코드를 짜고 확인해보면 \x2f 값이 없는 것을 확인할 수 있고 [그림 1-4] 실행해본 결과 쉘 코드가 잘 실행되는 걸 볼 수 있다. 이제 이렇게 수정한 쉘 코드를 이용해 argv[0]에 넣어보자.
[그림 1-5] 심볼릭 링크도 성공하는 것을 볼 수 있다.
argv[0]에 쉘코드가 들어있기 때문에 argv[0]의 주소값을 알아내야한다. [그림 1-6] 0xbffffb54를 사용해보겠다.
[그림 1-7] 이렇게 심볼릭 링크를 사용해 argv[0]에 쉘 코드를 넣고 exploit을 성공했다.
'WarGame > LOB(The Lord of the BOF)' 카테고리의 다른 글
10단계 vampire -> skeleton (0) | 2019.09.08 |
---|---|
9단계 troll -> vampire (0) | 2019.09.07 |
7단계 darkelf -> orge (0) | 2019.09.07 |
6단계 wolfman -> darkelf (0) | 2019.09.07 |
5단계 orc -> wolfman (0) | 2019.09.07 |