티스토리 뷰
지금까지 argv[1][47]이 '\xbf'이 아니면 프로그램을 종료했는데, 이번엔 '\xbf'이면 종료합니다.
코드를 우회하기 위해서 RTL이라는 기법을 사용하겠습니다.
RTL이란 Retrun To Library의 약자로 libc(공유 라이브러리)로 리턴하라. 이런 뜻 인데요.
ret 명령을 만나 libc로 리턴을 하게 프로그램 흐름을 조작해 준다. 이렇게 이해하면 될 것 같습니다.
system()함수의 주소를 찾고, system()함수의 인자로 /bin/sh를 넘겨주면 될 것 같습니다.
gdb로 bugbear를 디버깅 해보겠습니다.
main함수에 bp를 걸고 실행을 시킨 후 system 함수를 print하였습니다.
system함수의 주소는 0x40058ae0입니다.
위와같은 코드를 작성하였습니다. 이것은 system()함수에서 /bin/sh 문자열을 찾기 위한 코드입니다.
위의 코드를 컴파일 하였더니 /bin/sh 문자열의 주소가 나왔습니다. 0x400fbff9네요.
그럼 이제 익스플로잇 코드를 작성할 수 있을것 같습니다.
인자는 함수의 주소 8byte 뒤의 주소에 써줘야 하므로 함수의 주소 4byte뒤에는 AAAA로 채워주겠습니다.
익스플로잇에 성공하였습니다.
'Pwnable > Lob' 카테고리의 다른 글
Lob giant(15) (0) | 2018.01.23 |
---|---|
Lob bugbear(14) (0) | 2018.01.23 |
Lob golem(12) (0) | 2018.01.22 |
Lob skeleton(11) (0) | 2018.01.22 |
Lob vampire(10) (0) | 2017.12.22 |
댓글