ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [L.O.B] Level 7 - darkelf
    Wargame/L.O.B 2022. 10. 14. 06:53
    반응형

    Level 7 - darkelf를 풀어보자.

    이번에도 전의 Level에서 제약이 하나 추가되었다.

     

    소스 코드를 보면 다음 Level은 orge이고, 가장 상단에 check argv[0]이라는 힌트가 있다.

    다른 내용들은 생략하고, 코드의 중상단부에 있는 here is changed!의 내용을 보자.

    argv[0]의 길이가 77이 아니라면 문구를 출력하고, 프로그램이 종료된다.

    <orge 소스 코드의 내용>

     

    gdb를 이용해 프로그램을 더 분석해보자.

    <main+319>까지 있지만 이 정도의 내용만으로도 필요한 정보는 충분히 얻은 것 같으니 생략한다.

    <main+3>을 보면서 더미 값이 없다는 것을 알 수 있다.

    이번 문제를 푸는 데에는 더 할 것은 없다. (이전 Level과 다른 방법을 사용해야 한다.)

    <orge 파일의 gdb 분석>

     

    이번 문제를 푸는 데에는 앞의 Level에서 설명했던 argv[0]을 이해해야 한다.

    argv[0]은 파일의 실행 경로를 의미한다고 했다.

    이번 문제의 조건은 argv[0]의 길이에 제한이 있다는 것이다.

    이 실행 경로의 길이를 원하는대로 바꾸기 위해서는 어떻게 해야 할까??

     

    실행 경로의 길이는 절대 경로로 실행하거나, 파일의 이름을 변경해 바꿀 수 있다.

    예를 들어 orge 파일을 ./orge로 실행하면 길이는 6이다.

    하지만, 절대 경로인 /home/darkelf/orge로 실행하면 그 길이는 18이 된다.

     

    문제 해결을 위해서는 이 orge 파일을 다른 경로에 넣거나 이름을 변경하면 된다는 결론이 나온다.

    그런데 orge 파일을 복사하면, 현재 user인 darkelf의 소유로 파일이 생성된다.

    그래서 쉘 코드를 실행해도 darkelf의 쉘이 실행된다.

    그리고 소유권이 없기 때문에 orge 파일의 이름을 바꿀 수도 없다.

     

    여기서 bandit과 F.T.Z를 풀면서 공부한 심볼릭 링크를 사용해 문제를 풀어보자.

    심볼릭 링크는 간단하게 Windows 에서의 바로 가기 같은 것이라고 생각하면 된다.

    이 심볼릭 링크를 지정할 파일의 이름을 파일을 실행할 때 사용하는 './'를 제외하고 75자로 생성한다.

     

    아래의 사진을 보면, 75자의 a의 이름을 가진 파일이 심볼릭 링크로 orge와 연결된 것을 알 수 있다.

    생성된 파일을 실행하면 Windows에서의 바로 가기처럼 orge 파일을 실행하는 것과 같은 동작을 한다.

    (실수로 orge 파일을 삭제해 vm에서 root로 접속해 새로 생성했다. 그래서 파일의 생성 날짜가 다르다..)

    <심볼릭 링크로 생성한 75자의 파일>

     

    이제 조건을 모두 맞추어 주었으니, 생성한 파일의 Core Dump 파일을 이용해 문제를 풀어보자.

    파일을 실행하기 위해 ./를 넣어주고, argv들을 구분하는 공백을 중간에 넣으면서 프로그램을 실행한다.

    Segentation fault가 나오며 Core Dump 파일이 생성된다.

    이를 이용해 argv[2]의 주소가 0xbffff706이라는 것을 알아냈다.

    <알아낸 argv[2]의 주소>

     

    이제 페이로드를 작성하자.

    ret에 argv[2]의 주소를 넣고, 마찬가지로 공백으로 argv들을 잘 구분하며 페이로드를 작성해 입력한다.

    orge의 권한으로 쉘이 실행되며, my-pass를 입력하면 비밀번호가 나타난다.

    <나타난 비밀번호>

    반응형

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

    [L.O.B] Level 9 - troll  (0) 2022.10.20
    [L.O.B] Level 8 - orge  (0) 2022.10.20
    [L.O.B] Level 6 - wolfman  (0) 2022.10.14
    [L.O.B] Level 5 - orc  (0) 2022.10.13
    [L.O.B] Level 4 - goblin  (0) 2022.10.12

    댓글

Designed by Tistory.