본문 바로가기

시스템/FTZ

(20)
hackerschool FTZ : level 3 풀이 cat hint 문제 분석 1. cmd = "dig @" + argv[1] + "version.bind chaos txt"2. cmd에 적힌 명령 실행 풀이 ";my-pass;" 입력= dig@ ; my-pass ; version.bind chaos txt= dig@ 실행 -> my-pass 실행 -> version.bind chaos txt 실행 참고 1. 리눅스 연속명령어 실행 - ;과 &&의 차이점 ; : 앞의 명령의 성공여부와 상관없이 다음 명령어 실행 && : 앞의 명령이 성공한 경우 다음 명령어 실행
hackerschool FTZ : level2 풀이 문제 : 텍스트 파일 편집 중 쉘 명령 실행 find / -user level3 2>/dev/null사용자가 level3인 파일을 / 디렉토리부터 검색 /usr/bin/editor 실행 -> vim :! my-passvi 편집 중 쉘에서 my-pass 실행 참고 1. find [검색시작위치] [옵션] [수행작업] find / -user level3 2>/dev/null = 사용자가 level3인 파일을 / 디렉토리부터 검색 2. :! vi 편집 중 쉘 명령 실행하는 기능
hackerschool FTZ : level1 풀이 ls -l 디렉토리 목록 출력 find / -user level2 2>/dev/null사용자가 level2인 파일 검색 /bin/Execute 실행 bash 실행 후 password 확인 참고 1. ls : 디렉토리 목록 출력 자주 사용하는 옵션 -a : 숨겨진 파일, 디렉토리 출력 -l : 자세한 내용 출력 (권한, 소유자, 그룹 등) 2. find [검색시작위치] [옵션] [수행작업] find / -user level2 2>/dev/null = 사용자가 level2인 파일을 / 디렉토리부터 검색 3. /bin/Execute : 절대경로로 파일 실행 pwd: 파일의 절대경로 출력 4. bash : bash 쉘 실행
hackerschool FTZ : level 11 풀이 디렉토리 확인 hint 여기서 setreuid는 다시 ruid, euid를 각각 원하는 대로 변경가능한 함수ruid : 프로세스 실제 소유자 euid: SetUID 권한이 설정된 실행 파일에 의해 변경된다. euid는 일시적으로 다른 계정의 uid 저장하고, euid에 저장된 uid에 따라 프로세스의 권한이 결정된다. 여튼 내용보니 strcpy를 이용해 bof 하면 될 것 같다. argv[1]에 넣을 쉘 코드 만들기 1. 쉘을 만들 간단한 C코드 2. 컴파일 후 objdump를 이용해 어셈코드 확인 main execve 여기서 중요한 어셈블리만 뽑아서위 메인함수의 execve(sh[0],sh,NULL); 에 필요한 최소한의 어셈코드를 작성 컴파일 후 확인 밑에 보면 이 쉘코드는 NULL이 포함된 쉘코드 ..