2017/01/10 - [Study :)/FTZ] - [해커스쿨]FTZ level1 풀이과정
level2의 힌트를 보자.
리눅스에서 대표적인 텍스트 파일 편집기는 vi이다. 그래서 힌트를 보는 순간 vi가 생각났다.
그러면 vi에서 쉘의 명령을 실행 시킬수 있는 명령이 있을까?
나는 이문제를 풀기 전부터 그런 명령어가 있다는 것을 알고 있어서 쉽게 접근 할 수 있었지만, 모른다는 입장에서 다시 vi에 대해 검색해 보았다. vi 편집기 사용법 : http://igoto.x-y.net/xe/linux/154
엄청 나게 많은 옵션들과 명령어들을 보던중....
쉘 명령실행 할수있는 명령들을 찾을 수 있었다.
그리고 나서 생각해보았다. vi를 실행시켜서 level1과 같이 '/bin/bash'를 실행 시키면 되나?
그래서 vi편집기의 권한에 대한 정보가 궁금해 져서 찾아보았다.
먼저 vi프로그램의 위치를 알아야겠지?
which 명령어를 이용하면 자주사용하는 프로그램의 위치를 쉽게 알 수 있다.
vi의 권한을 보니 setuid설정된 것도 없고, 소유자와 소유그룹 모두 root였다.
그래서 생각을 달리했다. 분명 level1과 같이 level2도 다음 level3의 권한을 가진 파일이 존재할 것이다.
그리고 그 파일이 setuid가 설정 되어 있을 것이다. 이런 생각으로 무심코 level3의 소유권을 가진 파일을 검색해 보았다.
어머나? 있네...
역시 생각한것 처럼 소유권자는 level3이고 setuid가 설정되어 있다.
실행해보았다.
어라? vi와 똑같은 화면이 출력된다. vi의 복제품인가 싶어서 아까 찾은 vi의 파일과 해당 파일의 정보를 출력해 보았다.
확인해보니 vi와 서로 다른 데이터크기를 갖고 있었다. 리눅스의 vi는 1893740바이트에 크기였다면, editor라는 프로그램은 11651바이트 밖에 안되는 간단한(?) vi와 습사한(?) 프로그램인것 같았다.
그래서 editor라는 프로그램을 실행시켜서 vi에서 쉘명령어를 실행시키는 것 처럼 똑같이 해보았다.
level3의 쉘을 실행 하였다!! 'my-pass'명령어를 실행시켜서 level3의 패스워드를 보면 끝!
2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level3 풀이과정