ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [L.O.B] Level 10 - vampire
    Wargame/L.O.B 2022. 10. 20. 02:08
    반응형

    Level 10 - vampire를 풀어보자.

     

    소스 코드를 보면 다음 Level은 skeleton이고, argv hunter라는 힌트가 있다.

    argv hunter라는 힌트는 앞의 Level 8 - orge에서 있었는데, 이번에는 조금 다른 내용이다.

    무려 ultra argv hunter! 라고 한다..

    그 내용으로는 argv가 몇 개인지 상관없이 모든 argv를 0으로 초기화해버린다.

    <skeleton 소스 코드의 내용>

     

    혹시 힌트가 있을까 싶어 gdb를 분석하면서 더 자세히 봤지만 특별한 부분이 없다.

    아, <main+3>의 esp에서 48을 뺀 것은 int 형의 saved_argc가 선언되어서 그렇다.(더미 값은 없다.)

    <skeleton 파일의 gdb 분석>

     

    방법은 떠오르는 게 없기 때문에 무작정 부딪혀보는 수 밖에 없다.

    break를 leave에 걸어 함수가 끝나기 전의 스택 상태를 보도록 하자.

    <leave에 break를 걸어 스택 상태 확인>

     

    break를 걸기 위해 /tmp 디렉터리에 skeleton 파일을 복사해서 분석을 했는데 신기한 것이 있다.

    스택이 거의 끝나는 부분에 해당 파일의 절대 경로가 있다.

    앞의 부분들은 모두 초기화가 되어 공백인데, argv[0]의 절대 경로 부분이 초기화가 되어도 남아 있는 모양이다.

    이것을 이용해 공격을 시도해보자.

    <남아 있는 argv[0]의 절대 경로>

     

    공격 방법은 orge를 풀 때와 비슷하다.

    심볼릭 링크로 skeleton 파일과 연결할 새로운 파일을 NOP와 쉘 코드로 이루어진 이름으로 생성한다.

    다음으로 Core Dumped 파일을 만들어 argv[0]의 정확한 주소를 알아낸다.

     

    0xbfffff01 부분에 파일의 경로가 있는 것을 확인할 수 있다.

    (분석을 위해 x/100s 0xbfffffff-0x100을 사용했는데, 스택의 끝 부분이므로 간단히 보기 위해 저렇게 입력했다.)

    <Core Dumped 파일 분석>

     

    홈 디렉터리의 skeleton과 심볼릭 링크를 걸 새로운 파일을 생성한다.

    앞 뒤로 NOP를 넣은 이유는 입력한 쉘 코드의 내용이 스택의 범위를 넘어설 수도 있기 때문이다.

    (NOP 200개 후 쉘 코드를 입력하니, Segmentation fault가 나타나 방법을 생각했고, 구글링 결과 방법이 맞았다.)

     

    심볼릭 링크로 연결된 파일에 페이로드를 입력하며 실행을 시켜보니, skeleton 권한의 쉘이 실행되었다.

    my-pass를 입력하니 비밀번호가 나타났다.

    <나타난 비밀번호>

    반응형

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

    [L.O.B] Level 12 - golem  (1) 2022.11.02
    [L.O.B] Level 11 - skeleton  (2) 2022.11.01
    [L.O.B] Level 9 - troll  (0) 2022.10.20
    [L.O.B] Level 8 - orge  (0) 2022.10.20
    [L.O.B] Level 7 - darkelf  (0) 2022.10.14

    댓글

Designed by Tistory.