본문 바로가기

Wargame/Pwnable.kr

Pwnable.kr cmd2-9pt

  cmd1과 마찬가지로 argv[1]을 전달해 system() 함수의 실행을 통해 flag를 출력해내야 한다. 

delete_env() 함수로 환경 변수를 0으로 초기화하고 putenv() 함수로 PATH 환경 변수를 임의로 설정한다. 또, filter() 함수를 호출하는데 cmd1보다 더 까다롭다. 






 filter() 함수에 '/'가 걸리지 않도록 문자열을 argv[1]로 전달해야 하는데, echo 를 사용해 볼 수 있다. "echo ls" 라고 입력하면 그냥 'ls'라는 문자열이 출력되지만 "$(echo 'ls')" 라고 입력하게 되면 ls 명령어를 입력한 것과 마찬가지로 문자열 안의 내용을 실행하게 된다. 이 점을 이용하자.






  echo의 man 페이지를 보면 8진수 또는 16진수를 전달하기 위해 위처럼 입력해야 한다. 익스를 짜보자.






 cmd1의 flag가 cmd2 사용자의 비밀번호이므로 같이 스크립트를 작성했다. 전체가 한 문자열로 argv[1]로 전달되야 하므로 '(single quote)로 감싸고 \(back slash)를 문자열로 전달하기 위해 두 번 연속해 써준다. 익스에서는 '/', ' ', 'g'를 모두 8진수로 표현했다.






  짠..!

'Wargame > Pwnable.kr' 카테고리의 다른 글

Pwnable.kr leg-2pt  (0) 2017.04.26
Pwnable.kr asm-6pt  (0) 2017.04.23
Pwnable.kr cmd1-1pt  (0) 2017.04.19
Pwnable.kr shellshock-1pt  (0) 2017.04.17
Pwnable.kr lotto-2pt  (0) 2017.04.17