일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- leetcode 238
- MapReduce 실습
- 블로그 이전했어요
- Python
- 머신러닝
- leetcode125
- 데이터레이크와 데이터웨어하우스
- leetcode 234
- 배열
- Hadoop
- 빅데이터를 지탱하는 기술
- leetcode 561
- leetcode 819
- webcrawler
- leetcode 344
- leetcode 937
- 올바른 변수명 짓기
- leetcode 121
- docker로 airflow 설치하기
- airflow docker
- leetcode 49
- 컴퓨터구조
- 문자열 조작
- leetcode 5
- 스파크 완벽 가이드
- leetcode 15
- ctf-d
- leetcode
- Hortonworks Sandbox
- wargame.kr
- Today
- Total
HyeM
FTZ level3 풀이 본문
id: level3
pw : can you fly?
ㄴ 드래그 ㄱㄱ
1. ls -l
2. cat명령어로 hint 파일 읽기
해석 :
argc : 프로그램을 시작했을 때 전해지는 인자의 갯수. 첫번째 인수는 실행파일의 경로로 고정되어 있음.
argv : 프로그램이 시작되었을때 넘겨받은 인자. 문자열로 처리함 argv[0]은 파일경로의 값, argv[1]부터 차례대로 인자들이 들어감
|
만약 프로그램 실행시 전해지는 인자의 개수가 2개가 아니면, "Usage: ~ host" 에러 메시지 띄우고 종료
2개라면,
strcpy( cmd, "dig @"); //cmd 배열에 dig @ 복사하고,
strcat( cmd, argv[1] ); // cmd 배열에 입력 두번째 인자([1])를 추가하고,
strcat( cmd, " version.bind chaos txt"); //version.bind chaos txt를 추가한다.
system( cmd ); //cmd의 문자열을 system함수를 이용하여 쉘 명령어로 이용한다.
즉, 인자의 개수가 두개라면
dig @ (두번째 인자값) version.bind chaos txt
를 실행한다.
3. 우선 find 명령어로 level4권한의 파일을 찾아준다.
4. /bin/autodig 를 실행해보자.
보면 위에서 봤던 힌트속 코드 내용처럼 Usage 에러가 출력되는 것을 볼 수 있다.
만약, 인자를 추가해서 하면?
위의 결과 처럼나온다.
( dig @ google.com version.bind chaos txt 가 실행된 결과임)
5. 이 파일이 level4의 권한을 가지고 있다는 것과 system() 함수를 호출한다는 점을 이용해서, level4의 pw를 알아본다.
/bin/autodig 'google.com;my-pass'
( dig @ google.com; my-pass version.bind chaos txt 가 실행된 결과임.
여기서 my-pass는 argument를 받지 않는 명령어라 뒤에는 무시됨.
결론적으로 dig @ google.com 를 하고, my-pass 명령을 하게 된 것이다. )
이때 ' ' 를 이용해야지만, 문자열 형태로 전달할 수 있음!
level4의 pw : suck my brain
'Wargame > FTZ' 카테고리의 다른 글
FTZ level2 풀이 (0) | 2020.03.07 |
---|---|
FTZ level1 풀이 (0) | 2020.03.07 |