본문 바로가기

시스템

(42)
hackerschool FTZ : level 13 풀이 문제 분석 1. strcpy를 이용해 bof 2. 조건 : argc>1 && i==0x1234567 풀이 1. 변수 i의 위치 확인 : ebp-12 lea 0xffffbe8(%ebp), %eax => lea eax ebp-12 ebp-12 보면 0x1234567 확인 가능 2. 환경변수로 저장한 쉘 주소 획득 : 0xbffffbc9 쉘코드의 환경변수 등록 : https://pu1et-panggg.tistory.com/51 3. payload = dummy(1036bytes) + 0x1234567 + dummy(12bytes) + ret(shellcode) = "a"*1036 + 0x1234567 + "a"*12 + 0xbffffbc9
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