WarGame/LOB(The Lord of the BOF)

8단계 orge -> troll

cyanhe_wh 2019. 9. 7. 16:33
반응형

[그림 1-1]

우왕!! 이번 단계 소스코드에 argv[1]만 쓸 수 있게 돼 있고 argv[1]을 0으로 초기화해버린다.

환경변수, buffer, argv[2]도 사용할 수가 없다. 그렇다면 argv[0]에 쉘 코드를 넣고 exploit을 시행하 보자.

 

심볼릭 링크를 이용해 argv[0]에 쉘 코드를 넣어보자.

[그림 1-2]

그러나 [그림 1-2] 심볼릭 링크가 실패가 되었다. 실패 내용은 No such file or directory이다.

쉘 코드를 보면 \x2f라는 부분이 있다 이것은 '/'이다 여기서 '/' 이것은 경로를 의미하기 때문에 오류가 날 수밖에 없다.

쉘 코드에서 /bin/sh 이런 식으로 쉘을 실행해야 하기 때문에 '/'의 문자가 필요하다.

/bin/sh 부분을 인코딩해서 쉘 코드에 \x2f 문자가 안 나타나게 하면될 것 같다.

/bin/sh 문자를 0x30이라는 코드로 XOR 연산을 해서 쉘 코드를 만들 것이다.

[그림 1-3]
[그림 1-4]

[그림 1-3] 이렇게 XOR 연산을 이용하여 쉘 코드를 짜고 확인해보면 \x2f 값이 없는 것을 확인할 수 있고 [그림 1-4] 실행해본 결과 쉘 코드가 잘 실행되는 걸 볼 수 있다. 이제 이렇게 수정한 쉘 코드를 이용해 argv[0]에 넣어보자.

[그림 1-5]

[그림 1-5] 심볼릭 링크도 성공하는 것을 볼 수 있다.

[그림 1-6]

argv[0]에 쉘코드가 들어있기 때문에 argv[0]의 주소값을 알아내야한다. [그림 1-6] 0xbffffb54를 사용해보겠다.

[그림 1-7]

[그림 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