본문 바로가기
Hack/ftz

ftz 풀이 level19

by Choraengyi 2017. 1. 11.
728x90

 ftz level19 풀어보겠습니다.


힌트조회 입니다.



 코드가 생각보다 간단합니다. 배열선언 후 gets 함수로 입력받은 값을 출력하는 프로그램입니다. gets 함수에서 버퍼오버플로 취약점이 있다는 것을 알 수 있습니다.



 구조를 한 번 보겠습니다. 메모리 구조를 한번 정리해보면


20(배열)+20(dummy)+4(sfp)+(ret)


44바이트를 건너뛰고 쉘코드 환경변수 주소를 삽입하여 공격해보겠습니다.



환경변수를 설정하였으면 getenv  함수로 주소를 추출합니다.



 주소가 나왔으니 공격을 해보겠습니다.



 공격하니 권한상승이 이루어지지 않았습니다. 권한 상승을 위해 setreuid 가 필요합니다.



level20의 uid는 3100임을 확인하였습니다. setreuid 와 쉘실행을 포함한 쉘코드를 다시 환경변수에 넣어 삽입하는 방법도 있지만 다른 방법으로 접근해 보았습니다.


gdb 에서 브레이크 포인트를 아무데나 걸어주고, 실행을 시켜줍니다.


그리고 print로 setreuid를 찾으면 해당 함수의 주소가 나옵니다.


 다음으로 페이로드를 짜는데 그대로 44바이트를 아무거나 잡아주고 그뒤에


20(배열)+20(dummy)+4(sfp)+setreuid+shell+geteuid+geteuid


 같은 형식으로 넣어줍니다. 매게변수는 쉘실행 뒤에 넣어줘야 합니다. 매개변수는 3100을 16진수로 표현하여 0x00000c1c 입니다. 



ftz level19 풀어보았습니다.


728x90
반응형

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

ftz 풀이 level20  (0) 2017.01.12
ftz 풀이 level18  (0) 2017.01.08
ftz 풀이 level17  (0) 2017.01.06
ftz 풀이 level16  (0) 2017.01.06
ftz 풀이 level15  (0) 2017.01.04

댓글