ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 해커스쿨 LOB level4
    System/HackerSchool LOB 2019. 7. 14. 14:17

    이번엔 삽질을 좀 해서 분량이 있습니다!

    이번엔 egghunter이라는게 생겼네요. 별 건 아니고, 시작하기 전에 설명드리자면, 이 부분이 환경변수를 모두 0으로 초기화해버려서 전에 BOF 일으키던 방법으론 못 풀어요. 별게 아니진 않죠 그래도 풀 방법은 있어요 ㄱㅊ

    암튼 argv[1]의 48번째 문자는 \xbf여야 하고, 그 뒤에는 쉘코드를 직접 입력해줘야 합니다

    그래서 이 egghunter 부분을 보면 memset(메모리를 지정된 값까지 어떤 값으로 지정하는 함수)가 쓰여서 아마 환경변수 사용을 저지하는 거 같죠

    memset 함수 사용법을 알아보자면 요래 되어있는데, 위 코드에서 이 함수의 사용방법을 보면 환경변수가 있으면 이를 strlen(environ[i])까지 0으로 바꿔버리자 이런 뜻이거든요 strlen(environ[i])는 해당 환경변수의 끝까지니까요

    쨌든 그러면 gdb를 키고 확인할 게 있어요 코드에서 strcpy가 쓰일 때가 어느 부분인지

    그럼 그 직전에 BP를 걸고 그 전까지의 모든 과정을 살펴보면 어떻게 문제를 풀어야 할지 감이 잡히겠죠

    모르지 않아요 지금 기억이 안날 뿐

    일단 orc 프로그램을 같은 디렉토리에 cp 명령어로 orc_copy 파일에 복사한 뒤 bp를 걸고 처음엔 그냥 \xbf 48개, 그 뒤에 쉘코드를 넣어봤습니다

    그 다음으로 edx 레지스터를 뜯어보면 0xbffffc4f - 5f에 90으로 떡칠돼있는 것을 확인할 수 있죠

    여기가 argv[2]의 시작주소라는 말입니다

    그러므로 bash2로 바꾼 뒤 처음엔 아무 문자 44개(버퍼 + SFP), 그 다음엔 argv[2]의 시작주소 + 쉘코드 형식으로 하면 완벽한 페이로드인데 안되네요 시불것

    아! orc_copy로 해서 그렇구나 하고 orc로 돌아와서 하면 아예 bp 걸고 재시작하는 과정부터 권한이 없다 뜨네요 뭐지 시불?

    그래서 풀이보고 해당 디렉토리에 tmp 디렉토리 하나 더 만들어서 거기에 orc 파일 복붙하고 같은 짓을 또 합니다

    이번에는 성공적으로 재시작되고 실행되는 것을 확인할 수 있습니다

    근데 이번에는 argv[2] 시작주소가 좀 다르네요 그럼 되겠지..?

    그래서 다시 홈 디렉토리로 돌아와서 bash2 입력한 뒤에 같은 페이로드에 주소만 tmp 디렉의 orc 파일 argv[2] 시작주소로 하면 쉘이 잘 따이는 것을 확인할 수 있습니다

     

    이야 삽질 과정까지 적으니까 뭔가 뿌듯하네요

    교보문고 와서 하니까 적당히 시끄럽고 공부도 잘되는듯 타자소리도 크지 않은 거 같고(큰가..)

     

    2019.7.14

    ㅎㅇㅌ

    'System > HackerSchool LOB' 카테고리의 다른 글

    해커스쿨 LOB level6  (0) 2019.07.14
    해커스쿨 LOB level5  (0) 2019.07.14
    해커스쿨 LOB level3  (0) 2019.07.14
    해커스쿨 LOB level2  (0) 2019.07.12
    해커스쿨 LOB level1  (0) 2019.07.12
Designed by Tistory.