2017. 9. 23. 18:40ㆍWebHacking/[OverTheWire]Natas
[ PHP 코드 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <? $key = ""; if(array_key_exists("needle", $_REQUEST)) { $key = $_REQUEST["needle"]; } if($key != "") { if(preg_match('/[;|&]/',$key)) { // 키값에 ; & 이 포함되어 있으면.. print "Input contains an illegal character!"; } else { passthru("grep -i $key dictionary.txt"); } } ?> | cs |
문제 9번과 비슷한 grep의 특성을 활용하는 문제이다
문자 ; 과 & 을 금지한 이유는 다음과 같습니다
유닉스(리눅스)에서 ; 과 & 사용방법에 대해서 설명하겠습니다
[ 다중명령어 사용하기 ]
1> " ; " 명령어의 끝을 알린다
# 명령어1 ; 명령어2 ; 명령어3
명령어1을 실행한 뒤 명령어2를 실행하고 명령어3을 차례대로 실행한다
명령어1이 비정상적인 입력으로 실행에 실패하더라도 명령어2와 3은 일단 실행한다
2> " | " ( or 와 비슷함 )
# 명령어1 ; 명령어2 ; 명령어3
명령어1을 실행한 뒤 명령어2를 실행하고 명령어3을 차례대로 실행한다
명령어1이 비정상적인 입력으로 실행에 실패하더라도 명령어2와 3은 일단 실행한다
3> " && " ( and 와 비슷함 )
# 명령어1 && 명령어2 && 명령어3
명령어1을 실행하고 정상적으로 실행이 되어야만 명령어2와 명령어3을 실행시킬 수 있다
하지만 현재 문제에서 해당 기호들을 막아놓았기 때문에 문제9에서 사용했던 grep의 특성을 이용해 문제를 풀어야 합니다
#grep [ 찾을 문자열 ] [ 검색하는 대상 파일 1 ] [ 검색하는 대상 파일 2 ]
입력값 : c /etc/natas_webpass/natas11
문자열을 검색한 파일들을 구분하기 위해 파일명을 명시해주고 : 로 검색한 문자열과 구분시키는 grep의 기능을 확인할 수 있다
natas11:U82q5TCMMQ9xuFoI3dYX61s7OZD9JKoK
'WebHacking > [OverTheWire]Natas' 카테고리의 다른 글
[ Natas 14 -> Natas 15 PHP Injection ( 쿼리 조건문 변조 ) ] (0) | 2017.09.28 |
---|---|
[ Natas 13 -> Natas 14 파일 시그니처 ( File Signature ) ] (0) | 2017.09.25 |
[ Natas 9 -> Natas 10 grep 다중명령어 ] (0) | 2017.09.23 |
[ Natas 8 -> Natas 9 bin2hex(), base64_encode() ] (0) | 2017.09.23 |
[ Natas 7 -> Natas 8 URL ] (0) | 2017.09.23 |