본문 바로가기
  • True knowledge exists in knowing that you know nothing. -Socrates-

Study/lob11

LOB level5(orc->wolfman) LOB level 5 LOB (orc -> wolfman ) 1. cat 명령어를 통하여 wolfman.c 의 소스 코드를 확인합니다. 2. 소스코드 분석 1. char 형 buffer [40] 선언 2. argc 가 2 미만일 경우는 오류 메시지 출력 후 종료 3. 에그 헌터 환경 변수 사용 금지. 4. argv[1][47]과 "\xbf"와 같지 않다면 오류 메시지 출력 후 종료 5.strcpy 함수 : argv[1]에 있는 것을 buffer에 복사 합니다. 6.printf 로 buffer를 출력 합니다. 7.memset 으로 buffer를 40까지 0으로 초기화 합니다. 3. gdb 권한 문제를 우회하기 위해 tmp에 복사합니다. 4. tmp 로 이동 하여 gdb wolfman 명령어를 입력합니다. .. 2016. 9. 13.
LOB level 4 (goblin -> orc) LOB level 4 LOB (goblin -> orc) 1. 첫 번째로 cat 명령어를 사용하여 orc파일의 코드를 확인합니다. 2. 코드 분석1) char형 buffer[40]을 생성 2) 전달 받는 인자의 수가 2개 미만이면 프로그램 종료 3) strcpy argv[1]을 buffer에 복사한다.여기서 argv[0]은 프로그램을 실행시키는 명령어 입니다. 예를 들어 ./cobolt 여기서는 이것이 argv[0]이 되겠습니다. 4) egghunter 바로 환경변수를 사용하지 못하게 막는 것입니다. c언어 함수 memset은 원하는 부분을 초기화 시켜주는 함수입니다. 5) argv[1][47] 이 부분은 argv[1]에서 47번째가 "bf"와 같아야 한다. 라는 의미 입니다. (이것을 쉽게 해석하면 환.. 2016. 8. 1.
LOB level 3 (cobolt -> goblin) LOB level 3 LOB (cobolt -> goblin) 1. 첫 번째로 cat 명령어를 사용하여 goblin파일의 코드를 확인합니다. 2. 코드 분석1) char형 buffer[16]을 생성 2) gets함수는 scanf 함수와 동일한 기능을 하는 함수입니다.어떤 값을 입력받는 함수입니다.buffer에 입력값을 저장 3. gdb 를 사용하여 인자값들의 주솟값을 확인하기 위해 cp 명령어를 사용해 /tmp로 복사시켜줍니다. $ cp goblin /tmp/goblin ( gdb 권한 문제) (tmp위치에서 gdb goblin을 한 후) gdb를 이용해 스텍의 크기는 16 이라는 것을 알 수 있습니다.16byte+main함수의 ebp(4byte)=20byte 를 채운 후 return address (4.. 2016. 8. 1.
LOB level 2 (gremlin -> cobolt) LOB level 2 LOB (gremlin -> cobolt) 1. 첫 번째로 cat 명령어를 사용하여 cobolt파일의 코드를 확인합니다. 2. 코드 분석1. char형 buffer[16]을 생성2. 전달 받는 인자의 수가 2개 미만이면 프로그램 종료3.strcpy argv[1]을 buffer에 복사한다. 여기서 argv[0]은 프로그램을 실행시키는 명령어 입니다. 예를 들어 ./cobolt 여기서는 이것이 argv[0]이 되겠습니다. 3. gdb 를 사용하여 인자값들의 주솟값을 확인하기 위해 cp 명령어를 사용해 /tmp로 복사시켜줍니다. $ cp cobolt /tmp/cobolt ( gdb 권한 문제) (tmp위치에서 gdb cobolt을 한 후) gdb를 이용해 스텍의 크기는 16 이라는 것을 .. 2016. 8. 1.
LOB level1 (gate->gremlin) LOB level 1 LOB (gate -> gremlin) 1. 첫 번째로 cat 명령어를 사용하여 gremlin파일의 코드를 확인합니다. 2. 코드 분석1. char형 buffer[256]을 생성2. 전달 받는 인자의 수가 2개 미만이면 프로그램 종료3.strcpy argv[1]을 buffer에 복사한다. 여기서 argv[0]은 프로그램을 실행시키는 명령어 입니다. 예를 들어 ./gremlin gdb 를 사용하여 인자값들의 주솟값을 확인하기 위해 cp 명령어를 사용해tmp로 복사시켜줍니다.( gdb 권한 문제) gdb를 이용해 스텍의 크기는 0x100=256byte라는 것을 알 수 있습니다. b * 는 breakpoint를 말합니다.disas main에서 프로그램을 멈출 지점을 정해주는 것 입니다.(.. 2016. 7. 13.