티스토리 뷰

level3를  user로 되어있는 것을 find 명령어로 찾습니다.

/usr/bin/editor를 ls-al 명령어로 용량과 소유자, 그룹을 확인합니다. user는 level3로 되어있고 group은 level2로 되어 있네요.

/usr/bin/editor을 실행해 보겠습니다. 실행을 했더니 기존의 vi와 별 다를게 없어보입니다.

비교 차원에서 기존의 vim과 editor의 용량을 분석해봤는데, editor가 훨~씬 작네요.


gdb명령어로 리버싱을 시작해보겠습니다. 전체적인 소스는 앞의 level1보다 훨씬 간단하네요. 

요약을 해보자면

1. 스택을 구성

2. setreuid(3003,3003)을 이용해 실행되는 파일의 UserID 권한으로 level3 계정을 실행 합니다.

3. system() 함수를 이용해서 vi 편집기를 실행합니다. 즉, level3의 권한으로 vi 편집기를 실행하는 겁니다.


system바로 앞부분 push의 인자를 x/2x로 확인해 보겠습니다.

x/s로 다시 0x8048444를 확인해 보면 /bin/vi 문자열이 나오네요. 즉, 실행을 할 때는 /bin 디렉터리에 있는 vi를 가져와서 실행을 합니다.


vi 명령어중에 Tip이 있는데, :q(저장), :q!(저장하지 않고 종료), :qw(저장하고 종료)는 기본적으로 다들 아시는데, :! 명령어 형식으로 명령어 실행시 셸 화면으로 일시적으로 복귀하면서 입력한 명령어가 실행됩니다. :r! 명령어를 실행시에는 vi 화면 본문에 실행한 결과가 화면에 출력이 됩니다. 밑의 화면과 같이 :r!id 를 실행해봅니다.


/bin/vi를 실행했으니, uid값은 level3로 넘어간 것을 볼 수가 있습니다. 이 출력물은 vi화면상에 그대로 출력이 됩니다.


이제 level3의 권한을 얻었으니, my-pass를 출력합니다.


vi 화면상에서 출력을 원하시면 :r!my-pass를 입력하시고 Enter를 눌러주세요.


vi 화면상에서 패스워드가 출력이 되는 것을 보실 수가 있습니다.


패스워드만 출력이 됬지, 완전한 level3 셸을 얻지는 못했으므로, 지금까지 vi 편집기에서 단순한 일회성 명령어를 실행하는 것이 아니라 셸을 실행하는 것입니다. 그렇게 하면 일시적으로 얻은 level3의 권한으로 셸이 실행되고, 해당 셸이 유지되는 동안 level3 계정이 됩니다.

그 방법으로 'sh'를 입력하면 셸 상태로 돌아가게 됩니다.


'시스템해킹 > FTZ' 카테고리의 다른 글

FTZ LEVEL6 문제풀이(시스템 인터럽트)  (0) 2015.07.21
FTZ LEVEL5 문제풀이(Race condition)  (0) 2015.07.20
FTZ LEVEL4 문제풀이  (0) 2015.07.18
FTZ LEVEL3 문제풀이  (0) 2015.07.15
FTZ LEVEL1 문제풀이  (0) 2015.07.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함