WarGame/LOB(The Lord of the BOF)

13단계 darkknight -> bugbear

cyanhe_wh 2019. 11. 25. 23:03
728x90
반응형

[그림 1-1] 소스코드

이번 문제는 RTL(Return To Library) 문제이다.

소스코드를 보면 더 이상 스택 부분 주소 값을 넣을 수 없게 '\xbf' 부분이면 프로그램이 종료된다.

 

여기서는 system() 함수를 사용할 것이다. 그러면 함수 주소를 알아야 한다.

 

[그림 1-2] system 함수 주소

gdb를 이용해서 system 함수 주소 값을 가져온다.

 

이제 system 함수에 들어갈 인자 값이 필요하다. 여기서 우리가 system 함수를 이용해 실행할 것은 쉘(/bin/bash)이다.

당연히 메모리에 올라와 있는 문자열이 필요하다. 메모리에 /bin/bash라는 문자열이 올라와있는 곳의 주소 값을 찾아보자.

[그림 1-3] /bin/bash 찾는 소스코드

그림 1-3 소스코드를 컴파일해서 실행시켜 /bin/bash 메모리 주소값을 찾아보자.

[그림 1-4] /bin/bash 메모리 주소값

컴파일한 후 이렇게 실행하면 메모리 주소 값이 나온다.

이제 이 두 주소를 가지고 exploit을 하면 된다.

먼저 그림 1-1을 보면 총 메모리 크기를 알 수 있다.

그것을 기반으로 계산을 해보면 

dummy(40) + sfp(4) + system()(4) + dummy(4) + /bin/bash(4) 이렇게 넣으면 된다.

[그림 1-5] exploit 성공

이렇게 하면 exploit이 성공해 쉘이 뜨는 것을 확인할 수 있다.

728x90
반응형

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

12단계 golem -> darkknight  (0) 2019.09.20
11단계 skeleton -> golem  (0) 2019.09.20
10단계 vampire -> skeleton  (0) 2019.09.08
9단계 troll -> vampire  (0) 2019.09.07
8단계 orge -> troll  (0) 2019.09.07