본문 바로가기

시스템/FTZ

(20)
hackerschool FTZ : level 11 풀이 문제 분석 strcpy를 이용해 main 함수의 ret 조작 풀이 1. str 크기 : 264bytes 0x108(=264) 만큼 스택에 할당 2. payload = shellcode(268bytes) + ret = {nop+shellcode} + 0xbffffbb8
hackerschool FTZ : level 10 풀이 문제 분석 1. 공유 메모리 이용 2. 공유 메모리 key 값 7530 key 값이 7530인 공유 메모리에 적힌 값을 읽어오면 된다. 풀이 1. 공유 메모리 읽어온 후 출력하는 파일 작성 2. 실행 후 결과 확인 참고 공유 메모리 여러 프로세스에서 함께 사용하는 메모리로, 공유메모리를 이용하면 프로세스끼리 통신을 할 수 있고, 같은 데이터를 공유할 수 있다. 공유 메모리를 사용하기 위해 공유 메모리를 생성한 후 , 공유 메모리를 프로세스 안에 첨부해 마치 자기 메모리를 사용하듯 사용한다 공유 메모리 함수 shmget : 공유 메모리 생성 int shmget(key_t key, int size, int shmflg); shmat : 공유 메모리를 프로세스 몸 안으로 첨부 void* shmat(int sh..
hackerschool FTZ : level 9 풀이 문제 분석 fgets(buf, 40, stdin)을 이용해 buf2를 "go"로 덮어쓰기 풀이 1. buf1크기, go위치 확인 a를 적당히 입력해서 어디서 overflow되는지 확인 buf1이 16bytes 할당된 것 확인 2. payload = dummy(16bytes) + "go" = "a"*16 + "go"
hackerschool FTZ : level 8 풀이 풀이 1. find / -size 2700c 2>/dev/null 용량이 2700bytes인 파일을 섬색 2. john the ripper 사용해 패스워드 복호화 shadow파일은 ' : ' 기준으로 9개 항목으로 구성되어 있음 패스워드(2번째)는 암호화되어 저장 패스워드 구조 [$Hashid$Salt$HashValue] john the ripper을 사용한 복호화 1. john the ripper을 윈도우에 설치 디폴트 설치 경로 : C:\john179 2. C\john179\run에 cmd.exe와 found.txt은 password.txt을 넣고 cmd 실행해 john password.txt 입력하면 복호화 가능
hackerschool FTZ : level 7 풀이 wrong.txt가 없다고 나오지만 풀이한다. 풀이 1. 띄어쓰기 기준으로 2진수로 변환 1101101 1100001 1110100 1100101 2. 2진수의 10진수 변환 1101101 1100001 1110100 1100101 =109 =97 =116 = 101 3. ASCII코드로 해석 => "mate"
hackerschool FTZ : level 6 풀이 풀이 이 화면이 나오기 전 Ctrl + C 즉, SIGINT 시그널을 보냄 프로그램 예상 실행 과정 tn 실행 -> system("cat hint") -> SIGINT(Ctrl+C) -> signal 처리 함수 SININT 시그널 받으면 tn 종료
hackerschool FTZ : level 5 풀이 문제 분석 /usr/bin/level5 실행 -> /tmp 내에 level5.tmp 파일 생성 -> level5.tmp 파일에 password를 쓴다. point 1. level5.tmp 파일 생성 2. /usr/bin/level5 실행 3. level5.tmp 파일 확인 풀이 1. vi level5.tmp -> :wq 2. /usr/bin/level5 3. cat level5.tmp
hackerschool FTZ : level4 풀이 문제 분석 finger 백도어 존재finger이 실행 -> /home/level4/tmp/backdoor 실행 즉,실행파일 원하는 파일을 만들어/home/level4/tmp/backdoor 라는 이름으로 저장 풀이 1. backdoor 작성 원하는 기능의 실행 파일 생성 후/home/level4/tmp/backdoor로 저장 쉘에서 my-pass명령 실행하는 파일 작성system("my-pass")gcc -o backdoor backdoor.c 2. finger서비스의 포트 확인 cat /etc/services | grep finger => /etc/services 결과 중 finger이란 문자열이 들어간 것만 출력 3. 외부에서 79번 포트로 접속 -> finger 실행 -> backdoor 실행됨