bof 원정대의 skeleton을 잡아보자!

* 소스코드 분석


(skeleton.c)


skeleton의 소스코드를 보면 argc를 저장해 두었다가 넘어온 인자를 전부 0으로 초기화하는 코드가 눈에 띈다. 우리가 지금까지 했던 인자를 이용하는 건 못한다는 뜻이다.

gdb를 이용해 메모리를 확인해보겠다.



(gdb를 통한 실행)




(메모리 상태)


메모리를 보면 인자 데이터 영역이 모두 0으로 초기화 된 것을 확인할 수 있다...

그러다 맨 아래 스택 밑바닥에 가보니 뭔가가 있다?



(스택 밑바닥)


혹시?


(스택 밑바닥)


밑바닥을 확인해보니 프로그램 명(경로)가 적혀 있는 것을 확인 할 수 있었다.

그렇다면..! 링크를 이용하여 여기에 쉘코드를 올릴 수 있겠구나! 라는 생각이 들었다. :)

바로 링크를 만들어주기 위해 경로를 만들었다.



(경로 생성)



그 후 링크!


(링크 생성)



링크를 만들었다면 끝이다! Nop 코드도 충분히 넣었겠다! 이제 공격하면 된다.



(공격 성공)



쉘 획득!

'WarGame > 500 Project' 카테고리의 다른 글

(28/500) Lord of the BOF - darkknight  (0) 2017.06.20
(27/500) Lord of the BOF - golem  (0) 2017.06.20
(25/500) Lord of the BOF - vampire  (0) 2017.06.20
(24/500) Lord of the BOF - troll  (0) 2017.06.20
(23/500) Lord of the BOF - orge  (0) 2017.06.20

+ Recent posts