ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [L.O.B] Level 6 - wolfman
    Wargame/L.O.B 2022. 10. 14. 04:31
    반응형

    Level 6 - wolfman을 풀어보자.
    앞의 Level에서 제약이 하나 더 추가된 문제이다.
    하나씩 기본을 밟아가며 알아가도록 Level이 구성되어 있는 것 같다.

    소스 코드 파일을 분석해보자.
    다음 Level의 이름은 darkelf인 듯 하고, check length of argv[1]의 제약이 추가되었다.
    영어만 보자면 argv[1]의 길이가 제한이 되어 있는 것 같다.

    윗 부분의 해석은 생략하고, 중하단부의 check the length of argument를 보도록 하자.
    argv[1] 배열의 길이가 48을 초과하면 문구를 출력하고 프로그램을 종료한다.

    <darkelf 소스 코드의 내용>


    gdb를 이용해 darkelf 파일을 이어서 분석해보자.
    우선, int i와 buffer의 크기인 44 바이트만큼 esp가 ebp에서 떨어져 있으니, 더미 값은 없다.
    그 다음의 내용들은 소스 코드의 내용이고, 또 앞의 Level들을 거치며 이해하고 있으니 넘어가도록 하자.

    <darkelf 파일의 gdb 분석>


    이번에는 어떤 방식으로 문제를 풀어야 할까??
    우선, 이 파일을 자세히 알아보도록 하자.
    main 함수의 파라미터를 보면 int 형의 argc와 char 형 포인터의 argv가 있다.
    argc 는 들어오는 인자의 갯수를 의미한다.
    그래서 파일을 실행하면서 아무 것도 넣지 않으면 if 문의 argc 조건에 의해 argv error를 출력하며 종료된다.

    여기서 주목할 건 argv이다.
    argv[0]은 파일의 실행 경로를 의미하며, 항상 argv 배열의 가장 앞을 차지한다.
    이번 Level에서 조건이 정해진 argv[1]은 여태껏 Level 들을 풀어오면서 넣었던 인자들을 의미한다.
    그 argv[1]의 크기가 제한되어 있으니, 이번에는 그 다음 argv[2]를 이용해 공격을 시도해보도록 하자.

    공격은 argv[2]에 쉘 코드를 넣고 ret에 argv[2]의 주소를 넣어서 수행하면 된다.
    argv는 공백을 입력하여 구분을 할 수 있다. (이중 배열이라고 생각하자.)
    그리고, 이번 공격에서는 Core Dump 파일을 주소를 알아내는 데에 이용하도록 하자.


    [Core Dump]

    더보기

    Core Dump 파일이란, Unix 계열에서 프로그램이 비정상적으로 종료되었을 때, 현재 디렉터리에 프로그램이 종료될 당시의 메모리 상태를 기록한 파일


    우선, Core Dump 파일을 생성하기 위해 Segmentation fault를 띄워보도록 하자.
    (권한이 있어야 Core Dump 파일이 생성되므로 /tmp 디렉터리에 darelf 파일을 복사해온 뒤 실행해야 한다.)
    NOP를 44 바이트만큼 채우고, 공백을 입력해 argv[2]에 다음을 입력할 수 있도록 한다.
    if 문을 만족하기 위해 \xbf를 맞는 위치에 넣어주고, a를 100개 넣는다.

    gdb -q -c core로 Core Dump 파일을 분석하기 위한 gdb를 실행하자.
    아래 사진에 표시해 놓은 것을 보면 0xbffffbf8에서 NOP를 끝내고 공백(00)이 나온 후, \xbf가 들어가 있다.
    argv[2]의 주소는 그에 맞춰 0xbffffbfb라는 것을 알 수 있다.

    <Core Dump 파일 분석으로 알아낸 argv[2] 주소>


    ret에 0xbffffbfb의 주소를 넣고, NOP Sled에 의해 쉘 코드가 실행되도록 페이로드를 작성하자.
    darkelf의 권한으로 쉘이 실행되며, my-pass를 입력하면 비밀번호가 나타난다.

    <나타난 비밀번호>
    반응형

    'Wargame > L.O.B' 카테고리의 다른 글

    [L.O.B] Level 8 - orge  (0) 2022.10.20
    [L.O.B] Level 7 - darkelf  (0) 2022.10.14
    [L.O.B] Level 5 - orc  (0) 2022.10.13
    [L.O.B] Level 4 - goblin  (0) 2022.10.12
    [L.O.B] Level 3 - cobolt  (2) 2022.10.11

    댓글

Designed by Tistory.