[ftz] level2: hacker or cracker
텍스트 파일 편집 >> VI 편집기
쉘 명령 실행 >> VI 편집기 기능 중 "명령어 실행" 기능!
√ vi 명령어 실행 기능
- ":!명령어" 형식
(!: 강제로 실행. 나는 ! 없이 실행시켰다.)
- 명령어 앞에 r 옵션을 추가하면 추가 작업 없이 본문에 바로 실행 결과를 붙여넣을 수 있음
setuid 권한을 가진 텍스트 파일을 찾아보자.
/usr/bin 위치로 이동하여 editor를 실행해보자.
editor란 이름의 실행 파일을 실행시키니, VIM이 나왔다.
'vi 실행파일'을 다른 이름으로 복사한 것인지 한번 이 파일과 vi, vim을 비교해보자.
vi, vim과는 전혀 다른 크기임을 알 수 있다. 오히려 크기가 훨씬 작다.
√ gdb로 소스코드 분석
- procedure prelude 과정
: <main+0> main() 진입 전 EBP 주소 저장
: <main+1> 현 ESP를 EBP에 저장
: <main+3 ~ +16> main()에서 사용할 변수 공간 확보
>> setreuid(3003, 3003)
: 실행되면 /usr/bin/editor 파일은 일시적인 level3의 EUID 권한 갖음
>> system("/bin/vi")
- 결론
level3의 UID를 부여 후, system("/bin/vi")를 이용해 VI 편집기를 실행한다.
따라서 실행 파일의 크기는 당연히 /bin/vi, /usr/bin/vim보다는 작지만 VI가 실행되게 된다.
√ 공격
VI 명령어 입력창에서 쉘 실행 명령어를 넣어보았다.
(바로 :!my-pass 를 이용하여 실행시켜도 된다.)
완전한 셸을 얻으려면 VI 명령어 입력창에 반드시 셸을 실행시켜야 한다!
level3 권한을 얻을 수 있었다.
Level 3 Password = "can you fly?"
의문점: procedure prelude == 함수 프롤로그 ?
'write-up > pwnable' 카테고리의 다른 글
[ftz] level5: what is your name? (0) | 2019.08.12 |
---|---|
[ftz] level4: suck my brain (0) | 2019.07.28 |
[ftz] level3: can you fly? (0) | 2019.07.28 |
[ftz] level1: find local shell backdoor (0) | 2019.07.25 |
메모리 레이아웃 기초 (0) | 2019.07.24 |
댓글