ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [F.T.Z] Level 17
    Wargame/F.T.Z 2022. 10. 1. 00:27
    반응형

    Level 17을 풀어보자.

    Level 17도 그리 어렵지는 않고, Level 16을 풀 때와 비슷하게 풀이를 진행하면 된다.

     

    hint를 살펴보면, Level 16처럼 call의 포인터에 printit 함수의 주소를 넣는다.

    Level 16과 다른 점이라면 이번에는 Shell 함수가 없다.

    풀이를 위해서는 main 함수의 제일 아래 call 함수가 호출될 때 직접 쉘을 실행하도록 해야 한다.

    <Level 17의 hint>

     

    gdb를 이용해 분석을 해보자.

    printit 함수의 주소는 0x8048490인 듯하다. (이번에는 printit 함수는 분석하지 않고 넘어가자.)

    이번에도 buf와 call 사이에 40 바이트의 크기가 있다.

    이것을 NOP 으로 채우고, 앞의 Level들에서 했었던 환경변수를 선언해 그 주소값을 call에 넣어주도록 하자.

    <main 함수의 gdb 내용>

     

    쉘 코드를 입력한 'test'라는 이름의 환경변수를 선언했다.

    앞의 Level 들에 충분한 풀이가 있으므로, 자세한 설명은 넘어가도록 하자.

    이 환경변수의 주소를 출력하니 0xbfffff0f가 나타나는 것이 보인다.

    <환경변수 선언 및 주소 출력>

     

    페이로드를 작성해 attackme 파일을 실행한다.

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

    <나타난 비밀번호>

     

    이번 문제는 Level 16에 직접적인 쉘 코드를 입력하는 환경변수를 선언하는 것이 추가된 것이다.

    앞의 Level들에서도 했던 풀이다보니 간단하게 설명했지만, 이런 내용을 바로 깨닫고 문제없이 풀이를 해 뿌듯하다.

    (사실 아직 쉘 코드 작성을 못해 구글링으로 복사해서 사용하는데, 잘못된 코드를 가져왔는지 여러 번 시도를 했다..)

    반응형

    'Wargame > F.T.Z' 카테고리의 다른 글

    [F.T.Z] Level 19  (0) 2022.10.05
    [F.T.Z] Level 18  (0) 2022.10.05
    [F.T.Z] Level 16  (1) 2022.09.30
    [F.T.Z] Level 15  (0) 2022.09.29
    [F.T.Z] Level 14  (0) 2022.09.28

    댓글

Designed by Tistory.