WarGame/LOB(The Lord of the BOF)

7단계 darkelf -> orge

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

[그림 1-1]

전 단계에서 소스코드가 좀 더 추가되었다. 이번에는 argv[0] 즉, 실행파일의 길이가 77이 아니면 에러를 출력하겠다는 코드다. 이제 argv[0]의 길이만 77로 변경해 exploit을 해주면 된다.

 

심볼릭 링크를 이용해 길이가 77인 파일을 만들자.

[그림 1-2]

심볼릭  링크로 argv[0] 길이가 77인 파일을 만들어 실행했다. 그러나 [그림 1-2] argv[0] error가 발생했다.

. 과 / 도 argv[0]의 길이에 포함시키는 것이었다. 그래서 다시 길이가 75인 파일을 만들어 테스트해봤다. 

[그림 1-3]

[그림 1-3] 성공하는 것을 볼 수 있다. 실행할 때 파일의 길이를 . / 를 포함해 계산하는 것을 알 수 있다.

이제 argv[2]의 주소를 이용해 exploit을 할 수 있게 주소를 구해보자.

[그림 1-4]

그러나 gdb를 통해 분석할 때 또 argv[0]의 길이가 변하는 것을 알 수 있다.

이것을 분석하기 위해 또 길이를 구해야 한다. /home/darkelf/ 이거의 길이 14를 포함해 77이 돼야 한다.

[그림 1-5]

/home/darkelf/의 길이를 포함해 77을 만들어 gdb에서 실행한 결과 잘 돌아간다. 이렇게 해서 argv[2]의 주소를 알아왔다.

0xbffffbe4를 사용하자.

argv[0] : ./A*75

argv[1] : dummy(44byte) + 0xbffffbe4(4byte)

argv[2] : \x90(100byte) + shellcode(25byte)

[그림 1-6]

이렇게 exploit을 시도했는데 Segmentation fault이 뜨면서 실패했다...

원인을 알아보기 위해 실패할 때 뜨는 core dumped 값을 분석해보겠다.

[그림 1-7]

확인해보면 처음에 구했던 argv[2] 주소 값과 조금 차이가 있는 걸 알았다. 이제 [그림 1-7]에 보이는 주소 0xbffffb80 값으로 exploit을 시도해보자.

[그림 1-8]

이렇게 해서 exploit을 성공시켰다.

반응형

'WarGame > LOB(The Lord of the BOF)' 카테고리의 다른 글

9단계 troll -> vampire  (0) 2019.09.07
8단계 orge -> troll  (0) 2019.09.07
6단계 wolfman -> darkelf  (0) 2019.09.07
5단계 orc -> wolfman  (0) 2019.09.07
4단계 goblin -> orc  (0) 2019.09.07