본문 바로가기
Hack/ftz

ftz 풀이 level12

by Choraengyi 2016. 12. 31.

 ftz level12 풀어보겠습니다.


힌트조회 입니다.



 level11과 유사한 코드이나 이번에는 gets 함수가 있음을 볼 수 있습니다. 저번과 다르지만 gets 함수의 BOF 취약점을 이용한 공격을 하겠습니다.


우선 메모리먼저 살펴보겠습니다.


 level11과 매우 유사합니다. 우선 배열할당과 크기는 전과 같습니다.


256(배열)+8(dummy)+4sfp(base pointer)+4ret(return address)=272


저번과 같이 환경변수를 만들어 268바이트에 아무문자나 넣고, 뒤에 4바이트는 쉘코드의 주소를 넣어 쉘코드를 실행시키도록 하겠습니다.


우선 환경변수를 만들어 줍니다. 쉘코드 앞에는 NOP를 붙여줍니다. 함수 점프시 메모리주소가 처음쉘코드에 안잡힐 수도 있습니다.쉘코드와 환경변수 설정은 level11에서 했기때문에 따로 기재하지 않겠습니다.



환경변수의 주소값을 알아내는 C언어 파일을 만들어 줍니다. 이것도 level11과 같습니다.



컴파일 후에 주소까지 확인하였으면 이제 실행해 보는데 gets 함수의 전달방식이 전과 다르므로 전처럼 그냥 실행해 주면 실행이 되지 않습니다. 표준입출력을 이용하여 attackme에 전달하는 방식으로 접근하겠습니다. 리다이렉션과 파이프로 접근해보았으나, 추가적으로 입력을 받지 못하고 바로 종료되었습니다. 그래서 cat으로 쉘의 실행을 유지시켜주고 파이프로 표준 입력을 받아 실행시켜 보았습니다.



세미콜론으로 명령어를 구분하고 동시실행을 위하여 ()괄호로 묶어 줍니다.  ` 이 기호는 빼줍니다. 명령어로 인식하기 때문에 동시명령을 만들고 파이프로 attackme와 연결해주어 실행하면 계속 입력이 가능하여 패스워드를 획득할 수 있습니다.


728x90
반응형

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

ftz 풀이 level14  (0) 2017.01.03
ftz 풀이 level13  (0) 2017.01.02
ftz 풀이 level11  (0) 2016.12.28
ftz 풀이 level10  (0) 2016.12.12
ftz 풀이 level9  (0) 2016.12.07

댓글