본문 바로가기

[Pwnable] 해커스쿨 FTZ

[해커스쿨 FTZ] Level3

이번엔 FTZ level3 문제를 풀어보았다.

 

늘 그렇듯이 어떤 파일이 있는지 확인해본다.

힌트를 확인해 보았는데 추가힌트가 두 개 더 있다.

 

# 1. 동시에 여러 명령어를 사용하려면?

     -> 유닉스 계열에서는 세미콜론 ( ; ) 을 이용해서 여려 명령어를 수행 할 수 있다.

   2. 문자열 형태로 명령어를 전달하려면?

     -> 큰 따옴표 ( " " ) 를 사용해서 문자열 형태로 명령어를 전달 할 수 있다.

 

힌트로 나와있는 소스를 분석해보자.

1. 입력값을 받고 인자가 2개아니라면 오류를 출력한다.

 

2. strcpy 명령어를 사용해 cmddig@ 를 복사하고, 

   strcat 명령어를 사용해서 dig@ 뒤에 argv[1](입력받은 값), version.bind chaos txt 를 이어붙인다.

                             => cmd = dig@ argv[1] version.bind chaos txt

3. system() 명령어를 사용하여 cmd 를 호출, 수행한다.

 

-----------------------------------------------------------------------------------------------------------------------------------분석이 다 끝났으니 공략을 해보자.

 

우선 level4의 권한을 갖고있는 파일을 찾아보자.

autodig 라는 파일이 있다. 처음 힌트에도 코드의 이름이 autodig라고 나와있기도 하다.

 

추가 힌트를 사용해서 level4의 pw를 알아내 보자.

짜잔

level4 암호 : suck my brain

 

# argv[1] 부분에 ;my-pass 를 넣었기에 cmd = dig @;my-pass version.bind chaos txt 가 되었다.

이후에 dig @;가 실행, dig: Couldn't find server '': Name or service not known 라는 오류가 발생했고,

my-pass가 실행되어 Level4 의 암호인 "suck my brain" 가 출력되었다.

 

'[Pwnable] 해커스쿨 FTZ' 카테고리의 다른 글

[해커스쿨 FTZ] Level6  (0) 2020.03.02
[해커스쿨 FTZ] level5  (0) 2020.03.02
[해커스쿨 FTZ] Level4  (0) 2020.03.02
[해커스쿨 FTZ] level2  (0) 2020.02.18
[해커스쿨 FTZ] Level 1  (0) 2020.02.18