level15
로그인하구, 역시나 안에 있는 파일들을 들여다본다.. hint가 보이니까 들여다보니 이번에도 attackme의 소스코드가 보이는 듯 하다.
check의 값에 0xdeadbeef가 존재하는 곳의 주소를 넣어주어야 한다.
gdb로 0xdeadbeef가 존재하는 곳의 주소를 찾아보아야 한다. beef가 세번째줄에 0x80484b0에 있다. 그 주변을 잘 뒤져보면 0xdeadbeef 찾을 수 있을 것 같아서 하나씩 늘려가면서 찾아보았다.
역시나! 0x80484b2에 존재한다.
(python -c 'print "A"*40+"\xb2\x84\x04\x08"'; cat) | ./attackme
지금까지 했던 것 처럼 저렇게 입력해주면! 진한 곳은 아까 deadbeef 있는 주소! 여기다가 my-pass입력하면?
비밀번호가 나올거다!
짠!
level16
역시나 또 아이디 비밀번호 치고... 파일부터 들여다보기 hint있으니까 hint 보기!
이번에 하는 문제들은 다 이렇게 소스코드를 주는 것 같다. 이것도 역시 attackme의 소스코드인 듯 하다.
20바이트의 buf에 48바이트 입력을 받고 call을 하는데 printit 함수의 주소를 부르는 것 같다.
buf가 선언되고 *call이 선언되었으니 call부분을 덮어 써보자! buf와 call 거리를 알아야 할 듯하다..!
ebp-16에 0x8048500을 넣고 ebp-56에다가 입력값을 받는 것 같다.
아마도 ebp-16에 들어가있는 0x8048500은 printit 함수의 시작주소일 것 같다..!
역시나~! 우리는 ebp-16의 값을 printit 함수의 시작주소가 아닌 shell함수의 시작 주소로 바꾸는 것이 목표이다.
shell함수의 시작 주소도 확인해보면 0x080484d0이다.
(python -c 'print "A"*40+"\xd0\x84\x04\x08"'; cat) | ./attackme
이렇게! ebp-16의 값을 0x080484d0 이걸로 바꿔주고 실행시키면 my-pass를 입력할 수 있을 창이 뜬다
짠!
'HACKING > HACKERSCHOOL FTZ' 카테고리의 다른 글
hackerschool ftz level 19, 20 문제 풀이 (0) | 2021.05.13 |
---|---|
hackerschool ftz level 17, 18 문제 풀이 (0) | 2021.05.13 |
hackerschool ftz level 13, 14 문제 풀이 (0) | 2021.05.12 |
hackerschool ftz level 11, 12 문제 풀이 (0) | 2021.05.12 |
hackerschool FTZ LEVEL 9,10 문제 풀이! (0) | 2021.04.06 |