티스토리 뷰
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 |