FTZ WriteUp

Level19

이번 단계는 은근히 쉬워 보입니다. 허나 setreuid로 권한 상승이 되지 않으며 버퍼도 작습니다. 더미까지 더해도 얼마나 커질지는 모르겠습니다. 그리고…ASLR로 스택이 랜덤이 되니 Basic BOF는 힘들거같고..가능은 하지만 Setreuid 함수가 없으니 권한 상승이 되지 않겠군요.

 

그래서 제가 생각한 페이로드는 Chaining RTL을 할 생각입니다

Chaining RTL이란 나중에 다시 배우게 되겠지만 기본적인 RTL을 연속적으로 사용하는 것을 말합니다.

기본적인 Chaining RTL은 함수의 return 부분에 다른 함수의 주소를 넣어 다른 함수를 실행 시키며 이어가는 것을 말합니다.

! 다른 방법도 있습니다. Pop-pop-ret을 이용하여 함수를 실행시키고 그 다음 ret 부분에 다른 함수를 실행 시킬 수도 있습니다.

직접 디버깅하고 실행하며 설명하겠습니다.

무지 간단한 소스입니다 0x28, 40만큼 크기를 할당합니다 그렇다면 buf의 크기는

Buf(20) + dummy(20)이 되겠군요.

 

환경변수를 이용한 BOF공격이든 RTL이든 하면 상관이없으나.. 권한 상승이 되지 않습니다.

그렇담 우리는 setreuid를 사용해야합니다. 그 후에 RTL을 사용할 것입니다.

각 함수의 주소는 이렇습니다.

Pop-pop-ret의 주소는 0x804849d입니다

Pop-pop-ret을 사용하는 이유는

기본적인 Chaining RTL을 사용하면 권한이 상승되기 전에 쉘이 끝나버려서 pop-pop-ret을 이용한 공격을 하겠습니다.

 

페이로드는 다음과 같습니다.

 

이렇게 해서 Level19가 클리어 됐습니다.

Phantom@TeamH4C

댓글

댓글 본문
버전 관리
홍승표
현재 버전
선택 버전
graphittie 자세히 보기