ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [해커스쿨] FTZ Level 3 풀이 <;, "">**
    Pwnable/FTZ 2020. 7. 17. 23:32

     

    1. 

    level3의 비밀번호는 can you fly? 이다. level3에 로그인 한 뒤 hint 파일을 열어 보았다. 

     

     

     

    autodig의 소스를 보여주고 이를 이용하여 level4의 권한을 얻으라 한다

    맨 밑줄을 보니 힌트를 더 주었다 !

     

     

    * 동시에 여러 명령어를 사용하려면? → 다중명령어

    • ; (세미콜론) : 하나의 명령어 라인에서 여러 개의 명령을 실행 (하나의 명령어 다음에 추가) :첫 번째 명령이 실패하여도 두 번째 명령은 반드시 실행이 됨.
    • | (파이프) : 앞에서 나온 명령 결과를 두 번째 명령에서 사용 (연결)
    • && (더블 엠퍼센드) : 첫 번째 명령이 에러 없이 정상적으로 종료했을 경우에만 두 번째 명령을 수행
    • || (더블 버티칼바) : 첫 번째 명령의 결과에서 에러가 발생하더라도 각각의 모든 명령을 수행

     

     

    * 문자열 형태로 명령어를 전달하려면? → ""로 묶어!

    ex.

    • script "인자2;인자3" -  따옴표로 인자2개를 묶어버려 1개로 인식하게끔 → 인자 2개로 인식
    • script 인자2 인자3  -  인자 3개로 인식

     

     

     

     

     

    2. 

    * main함수의 인자, argc, argv

    argc (= arguments count)

    • main 함수에 전달된 인자의 개수
    • argument의 수, argument가 char형으로 저장이 되는 변수
    • 인자를 하나도 입력하지 않으면 argc = 1 (항상 argc > 1)
    • 인자의 정확한 개수는 argc-1 (파일명이 0번이기 때문에)
    • argc는 기본 1이다. argument가 없어도 1부터 시작, 만약 argument가 2개이면 argc는 3이 된다.

     

    argv (= arguments vector)

    • 가변적인 개수의 문자열
    • 프로그램을 실행할 때 지정해 준 인자의 문자열들이 실제로 저장되는 배열
    • argv[0]은 실행 파일명이 저장됨 (프로그램의 실행경로)
    • argv[1], argv[2], ... 순서대로 사용자가 입력한 argument가 저장 됨.

     

     

    * 문자열 관련 함수 strcpy, strcat, strlen, strcmp

    문자열 함수를 사용하기 위해서는 string.h 헤더 파일이 필요하다.

    • strcpy : 문자열 복사
    • strcat : 문자열 뒤에 붙이기 (두 문자열을 붙임)
    • strlen : 문자열 길이
    • strcmp : 두 문자열 비교 
      • 문자열이 같다 → 0 반환
      • 문자열이 다르다 → -1 반환

     

     

     

    해석에 필요한 정보를 얻었으니 이제 autodig의 소스를 해석 해보자.

    cmd라는 배열이 있다

    argc가 2가 아니면 Auto Digger Version 0.9\n

                            Usage : argv[0](숫자) host       라고 출력된다.

    cmd배열에 dig @ argv[1](우리가 입력할 값) version.bind chaos txt 가 추가됐다.

     

    cmd가 실행된다.

     

     

     

     

     

     

    3.

    level4의 setuid가 걸려있는 파일을 검색하고 그 파일을 실행해준다.

    소스코드 해석을 참조해보면 autodig를 실행할 때 인자값을 전달하지 않았기 때문에 몇가지 출력문이 출력되고 코드가 종료되는걸 알 수 있다.

    그러면 autodig에 어떤 인자값을 줘야할까?

     

    level4의 권한으로 setuid가 걸려있는 autodig 파일을 실행하면서 bash쉘과 my-pass 명령어를 동시에 실행하고 문자열 형태로 전달하면 되겠다

     

    /bin/autodig "bash;my-pass"

     

     

     

     

     

    'Pwnable > FTZ' 카테고리의 다른 글

    [해커스쿨] FTZ level 4 풀이 <Backdoor>  (0) 2020.07.18
    [해커스쿨] FTZ Level 2 풀이 <:!sh>  (0) 2020.06.26
    [해커스쿨] FTZ Level 1 풀이 <SetUID>  (0) 2020.06.26
    FTZ_trainer 6 ~ 10  (0) 2019.12.31
    FTZ_Trainer 1 ~ 5  (0) 2019.12.30

    댓글

Designed by Tistory.