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 |