Block 안에 특정 단어를 넣어야 풀리는 문제인 것 같다.
우선 소스코드를 보자
passthur라는 함수가 있는데 이 함수의 기능을 알아보았다.
PHP script내에 존재하는 passthur
명령어는 command를 실행하는 exec()
명령어와 비슷하게 사용할 수 있다고 한다.
passthur
안에 있는 grep -i key dictionary.txt
은 dictionary.txt
안에 $key
값이 존재하는지 확인하는 명령어이다.
dictionary.txt
파일을 열어야 하니 cat dictionary.txt
를 텍스트 박스에 쳐보았다.
뭔가 많긴한데 원하는 값이 나오진 않았다.
natas 소개에서 모든 암호는 /etc/natas_webpass/natas0안에 있다고 했으니 이 곳을 열어보자.
이것저것 쳐보다가 정답을 찾아냈다.
;cat /etc/natas_webpass/natas10 dictionary.txt을 치니 다음 레벨의 암호를 얻을 수 있었다.
9레벨과 비슷한데 보안상의 이유로 특정 문자를 필터링 한다고 적혀있다.
이전 문제에서와 다른 점은 ;
, |
, &
연산자를 필터링 하는 것이다.
저번 문제랑 비교하면서 알아낸 사실이 있는데 $key
에 들어가는 것을 Text Box에 넣는 것인데,
앞에선 ;
를 사용해 grep의 명령어를 끝내고 cat을 사용하여 문제를 해결하였고, 이번에는 -r
을 이용해 읽을 수 있는 파일의 범위를 제한하여 탐색해볼 것이다.
페이지에 grep -i -r '[a-z]' /etc/natas_webpass
를 치면 a부터 z까지 영어로 쓰여진 암호를 탐색할 수 있다.
위 명령어를 치면 11레벨의 암호를 얻을 수 있었다.
개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.