티스토리 뷰

pwnable/ftz

ftz level 9

slyfizz 2018. 7. 29. 17:49

level9 풀이입니다.

아이디 / 비밀번호 : level9 / apple



드디어 본격적인 BOF 문제가 나옵니다.



/usr/bin/bof 파일을 보니 lelvel10의 setuid가 걸려있고 level9에겐 실행권한만 걸려있어서 gdb로 분석할수 없습니다.



그러니 /usr/bin/bof 파일 대신 hint를  /tmp에 level9.c라는 이름으로 복사한 뒤



다음과 같이 한글을 지워줍니다.



그후 gcc로 컴파일해서 level9라는 실행파을을 만들어주고 



gdb로 분석해 줍니다.
gdb에 관해서는 아래 블로그의 내용을 읽어 보는 것을 추천합니다.

https://blackperl-security.gitlab.io/blog/2016/03/09/2016-03-09-gdbmemory-01/

여기서 gdb -q 는 gdb 실행시 나오는 글들을 없애줍니다.
set disassembly-flavor intel은 어셈블리 코드 문법을 인텔 형식으로 사용한다는 것이고
disas main은 main을 분석한다는 뜻입니다.



그러면 위와 같은 어셈블리어들이 나옵니다.



여기서 중심적으로 봐야할 부분은 이 부분입니다.

입력을 받는 부분[ebp -40]과 비교를 하는 부분[ebp -24]의 거리차이가 16이나 납니다.

아까 힌트에서는 버퍼가 10이었는데 여기선 16이나 차이가 난다는 것은 그 사이에 16 - 10 = 6 만큼의 더미(쓰레기값)이

있다는 것을 뜻합니다. 




즉 /usr/bin/bof 를 BOF 하려면 16개 문자+ go 문자열을 입력해야 합니다.

                                 |버퍼(10) + 더미(6)|

입력해야 할 코드는 (python -c 'print"j"*16 + "go"';cat)|/usr/bin/bof가 됩니다.

python으로 코드를 짯고 ;cat은 프로그램이 바로 꺼지지 않고 my-pass를 입력할수 있게 해줍니다.

level10 비밀번호 : interesting to hack!


'pwnable > ftz' 카테고리의 다른 글

level 10  (0) 2018.08.06
ftz level 8  (0) 2018.07.29
ftz level 7  (0) 2018.07.29
ftz level6  (0) 2018.07.29
ftz level 5  (0) 2018.07.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함