코드를 보면 다음과 같다. 특별할게 없는 코든데 setreuid가 없어서 권한상승이 안된다.
두가지 방법으로 풀 수 있는데 setreuid가 포함된 쉘코드를 올리는 방법과 RTL Chaining으로 푸는 방법이 있다.
개념정리 및 연습도 할겸 RTL Chaining 기법으로 풀었다.
익스할 구조는 SFP + "setreuid 주소" + " gadget(pop pop ret)" + "setreuid 인자1" + "setreuid 인자2" + "system 함수주소" + "dummy 4byte" + "/bin/sh"
요렇게 해주면 된다.
그럼 이제 필요한 재료만 구해주면 된다.
먼저 호출할 함수들의 주소를 얻기 위해 간단히 소스짠 후 gdb로 주소를 구했다.
setreuid = 0x420d7920
system = 0x4203f2c0
다음으로 objdump로 gadget을 구했다. setreuid의 인자값이 2개이기 때문에 pop pop ret 구조인 gadget을 찾았다.
덤프된 내용을 보면 80489d 주소에 pop pop ret가 연속으로 이루어지고 있어 해당 주소를 사용했다.
마지막으로 /bin/sh 문자열이 담긴 주소를 구하면 되는데 system 함수내에 있는 /bin/sh를 구하는 방법과 환경변수에 /bin/sh를 등록하고 환경변수 구하는 두가지 방법 중 환경변수를 통해 구하는 방식을 썼다.
이제 필요한건 다 구했으니 그대로 익스해주면 된다.
잘나온당.
'Wargame > FTZ' 카테고리의 다른 글
FTZ level20 (0) | 2018.01.07 |
---|---|
FTZ level18 (0) | 2018.01.07 |
FTZ level17 (0) | 2018.01.07 |
FTZ level16 (0) | 2018.01.06 |
FTZ level15 (0) | 2018.01.06 |