일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 제넥신
- 임영규
- 금리인하
- 김재석
- 스콜피온킹
- 최강욱
- 픽크루
- 불가피
- libtins
- 은혜의 강 교회
- 조희연
- 해킹
- 양적완화
- 성남은혜의강교회
- 스페인 코로나
- 고민정
- 이상형 만들기
- 폰폰테스트
- 성남 코로나 확진자
- 킹덤 고근희
- 이지혜
- 홍혜걸
- 리리남매
- 학교 개학 연기 4월
- 김영권
- 김영권 아내
- 유튜버 김재석
- 뭉쳐야 찬다
- 미국 금리인하
- 이태원 클라쓰 15회 예고
- Today
- Total
Dork's port
FTZ Level3 Write-up(FTZ Level3 풀이) 본문
이번에는 Level 3으로 가보도록 하겠습니다.
먼저 힌트를 보도록 하겠습니다.
$ cat hint
소스코드를 보면 autodig의 소스코드를 내포하고 있는데 인자값을 받아 2개인지 체크인 후 아니라면 strcpy 및 strcat을 이용해 "dig @" + "인자 값" +" version.bind chaos txt"로 만들어 명령어를 실행시키는(systme(cmd);) 구조의 소스코드 이군요!
가령 autodig test라고 입력하였을 경우 명령창에서 아래와 같이 입력한 것과 같은 효과를 지닐 것 입니다.
$ dig @ test version.bind chaos txt
그럼 해당 파일을 찾아 보도록 하죠.
$ find / -name "autodig" -user level4 -perm -4000
그러면 아래와 같이 autodig의 위치가 보이는군요!
우선 아무 인자도 주지않고 실행해 봅시다!
그러면 사용법을 알려주는 군요!
그러면 해당 소스코드의 취약점을 이용해서 비밀번호를 알아 보도록 하겠습니다.
먼저 argv로 인자를 입력 받는 경우 기본적으로는 스페이스(' ') 가 각 인자를 구분 짓는 문자가 됩니다.
스페이스바를 포함한 문자열을 인자로 넘기고 싶은 경우 Double quotation을 이용해 감싸주면 스페이스바를 포함한 문자열을 하나의 인자로 입력이 가능합니다
또한, 명령어를 한줄에 동시 실행 시키기 위해선 2가지 방법이 있습니다.
';'과 "&&" 가 있는데요. 두가지 차이점은 ';'은 앞의 명령어를 실행시키고 뒷 명령어를 실행 시키는 반면 "&&"는 앞의 명령어가 정상적으로 실행 된 경우에 뒤의 명령어가 실행 된다는 차이점이 있습니다.
그러면 취합하여 비밀번호를 알아오는 코드를 다음과 같이 작성 할 수 있겠죠?
$ /bin/autodig ";my-pass;"
dig @을 먼저 실행 시킨 후 my-pass 명령어를 실행 시키고 version.bind chaos txt를 실행 시키는 것과 같은 효과를 줄 수 있습니다.
조금더 풀어서 이야기하면 위의 코드는 아래의 명령어를 각각 실행시킨 것과 같습니다.
$ dig @
$ my-pass
$. version.bind chaos txt
그러면 아래와 같이 패스워드가 출력 되네요! 그럼 다음 문제로 ㄱㄱ!
'Hackerschool FTZ Write-up' 카테고리의 다른 글
FTZ Level5 Write-up(FTZ Level5 풀이) (0) | 2018.03.22 |
---|---|
FTZ Level4 Write-up(FTZ Level4 풀이) (2) | 2018.03.22 |
FTZ Level2 Write-up(FTZ Level2 풀이) (0) | 2018.03.22 |
SetUID를 포함한 Shellcode(쉘코드) 작성하기 (0) | 2018.01.18 |
FTZ Level1 Write-up(FTZ Level1 풀이) (0) | 2018.01.09 |