Game/FTZ
level 12
ellen28
2015. 5. 28. 22:59
level12
힌트를 보기위해 cat hint
언뜻 보면 level11과 비슷해보지만 인자를 입력받는 방식이 다르다.
level12는 프로그램이 먼저 실행되고 후에 표준입력(키보드,stdin)으로 부터 인자를 받아온다.
후에 페이로드를 보내는 방식에 있어서 차이가 날것이다.
그럼 우선 ret주소를 찾기 위해 tmp폴더를 만들고 attackme를 복사해서
gdb로 살펴보았다.
disassemble main
buf의 크기는 264정도..
그리고 ret에 브레이크 포인트를 걸고 a를 많~이 보내줘서 실행해보았다.
그리고 내부를 살펴보았다.
나는 $esp-500인 위치부터 살펴보았다.
엔터를 누르다 보면 414141발견!
나는 저중에 0xbfffeb28을 ret주소로 선택
페이로드 :
nop*100 + 25바이트 쉘코드 + nop*139 + "BBBB"(EBP) + "\x28\xeb\xff\xbf"
인자를 전달 받는 방식이 다르므로 페이로드를 받는 방식도 다릅니다.
(페이로드) | ./attackme
왼쪽의 출력을 오른쪽의 입력으로 전달하는 |!
랜덤스택을 우회하기 위해 여러번 반복실행해준다.
페이로드를 정확하게 작성했다면 id를 입력했을때 level13이 뜰것!
my-pass명령어로 level13의 password를 알아내면 끝!
level12도 클리어