ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 해커스쿨 ftz level20
    System/HackerSchool ftz level 2019. 7. 9. 01:27

    마지막 레벨입니다!

    이번에도 level18에 비하면 너무 허전하네요 그런데 중요한건 이번 레벨에서는 BOF가 안 먹힙니다!

    특별히 코드 해석을 한번 해보자면, bleh라는 80바이트 배열을 초기화한 뒤 79바이트만큼의 문자를 입력받고 그대로 다시 출력하는 코드거든요

    순서를 보자면 setreuid 명령어는 문자열을 입력받는 명령 위에 있구요

    ㅇ? 암튼 그래서 BOF가 안 먹혀요 그럼 어떡해야 되냐

    여기서 취약점이 뭐냐면 printf(bleh) 이 부분인데요 이 경우에는 FSB(포맷 스트링 버그)를 노려볼 수 있어요

     

    간략하게 설명해볼게요 보통 printf() 함수를 사용할 때는 printf("%s", var) 이런 식으로 사용하잖아요(예시를 들자면?) 그런데 지금 코드에서는 bleh라는 80바이트짜리 배열을 지정하고는 그걸 그대로 printf() 함수에 집어넣었단 말이죠

    그게 취약점입니다 네 그렇대요 더 자세한 건 다른 문서 찾아보시면 훨씬 더 자세하고 명확한 정보를 얻을 수 있으니 그쪽을 추천드리구요 ^!^

    그래서 attackme 파일을 실행시킨 뒤 특정 문자 + 다음 서식문자를 넣으면 12바이트 뒤에 입력한 문자들이 그대로 나타나는 것을 볼 수 있지요 (A는 아스키코드표에 따라 41이기 때문)

    그러면 다음으로 할 짓은 printf() 함수의 소멸자 .dtors 주소 확인입니다

    printf() 함수가 사라짐과 동시에 프로그램이 끝나는데, 그 틈에 printf() 함수의 소멸자를 찾아 거기에 딱 쉘코드를 삽입해버리면 쉘이 따일 거라는 예상이 되기 때문이죠?

    따라서 환경변수에 에그쉘을 설정한 뒤, tmp 파일로 이동 / getenv.c에 환경변수 EGG의 주소를 확인하는 코드 작성, getenv C파일 컴파일 뒤 실행하면 0xbffffc8d 주소에 EGG의 주소가 있음을 확인할 수 있습니다

    근데 0xbffffc8d의 정수값은 x86 시스템에서 지정할 수 없는 크기이므로, 반으로 쪼개야 되거든요

    이걸 해주는게 %n(FSB에서 빈번하게 쓰이는 서식문자 중 하나, 다른 하나는 %x임)입니다

    0xfc8d(64653) -> 0x08049598, 0xbfff(49151) -> 0x0804959a 에 저장하면 됩니다.

    끝 아닙니다 뭔가 FSB도 좀 어려운 부분이 있는게 이 자릿수 계산인 거 같아요..

    AAAA\x94\x95\x04\x08AAAA\x96\x95\x04\x08%8x%8x%8x%8x 여기에

    64653 에서 자릿수 40바이트를 빼서 64613으로 만들어주고, %n이 앞자릿수도 계산한다는 것을 감안해서 64653을 0xbfff에서도 빼줘야 합니다. 근데 0xbfff에서 빼면 음수가 나오기 때문에 0x1bfff에서 빼면 50034가 나와요

    사실 이해 안 가네요ㅎ 복습해야지

    그래그래 기계어 코드 짜고 실행시켜주면 쉘코드가 작동되면서

    짜잔 FSB를 이용한 쉘따기 성공이네요

     

    hackerschool level 후기)

    트레이닝을 작년 이맘때 시작했을텐데 중간에 잠복기 빼면 한 7개월?만에 웬만큼 포너블에 익숙해진듯 하네요

    앞으로 더 어려운 내용 접하고 할때마다 포기하고 싶어질지도 모르겠다만

    처음 시작했을 때 마음을 잃지 않고 잘 해나가고 싶네요 ㅎㅇㅌ

     

    2019.7.9

    해커스쿨 레벨 끝, LOB 시작..?

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

    해커스쿨 ftz level19  (0) 2019.07.08
    해커스쿨 ftz level18  (0) 2019.07.08
    해커스쿨 ftz level17  (0) 2019.06.15
    해커스쿨 ftz level16  (0) 2019.06.15
    해커스쿨 ftz level15  (0) 2019.06.14
Designed by Tistory.