[ Natas 10 -> Natas 11 grep 다중명령어 ]

2017. 9. 23. 18:40WebHacking/[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