티스토리 뷰

※레벨에대한 정확한 비밀번호를 알려드지는 않습니다.  힌트와 해결과정을 포스팅하려고합니다.

※스스로 풀어보시기를 권합니다.



http://overthewire.org(링크)





  문제 분석 



 ↑ 특별한 힌트없이 입력폼만 주어져있다.

   # 입력폼에 임의의 글을 입력했을 때 'Wrong secret'이라는 문구가 나온다.

   # 이러한 문구로보아 올바른 Secret의 입력을 요구하는 문제로 유추해 볼 수 있다.


 ↑ 우측 하단의 " View Sourcecode "를 통해 소스코드를 볼 수 있다.


<?

include "includes/secret.inc";

    if(array_key_exists("submit", $_POST)) {    
        if($secret == $_POST['secret']) {                               // 입력폼에 입력한 값과 변수 $secret과 비교
        print "Access granted. The password for natas7 is <censored>";  // 참일 시 natas7에 대한 정보 반환
    } else {
        print "Wrong secret";                                           // 거짓일 시 "Wrong sercret "문구 반환
    }
?>






  해결 과정



  문제를 해결하기 위해서는 입력값이 변수 $secret와 같아야하는데 소스코드를 샅샅이 찾아봐도 $secret이 정의되어있지

  않다. 여기서 주목해야 할 것은 해당 소스코드에서 변수 $secret를 찾는것이 아니라, include함수를 통해 변수 $secret을

  가져오고 있다는 점을 알아채야한다.



 ↑ include통해 외부의 파일을 호출할 수 있다.


  PHP에는 파일 작성시에, 외부 파일을 포함하기 위해 사용되는 4가지 함수

   ㆍinclude() 

   ㆍrequire()

   ㆍinclude_once()

   ㆍrequire_once()


 ↑ include된 파일에 접근하면 변수 $secret에대한 정보를 얻을 수 있다.


 ↑ 문제해결




  natas6의 중점



  ㆍphp에서 include가 어떻게 쓰이는지 알아야한다.( 용도, 쓰임,.. )

  ㆍinclude를 제외한 같은 기능의 함수가 있는지 알아본다. ( require, include_once,.. 




'War Game > [ OverTheWire ] Natas' 카테고리의 다른 글

OverTheWir: Natas5  (0) 2017.06.16
OverTheWir: Natas3  (0) 2017.02.13
OverTheWir: Natas2  (0) 2017.02.13
OverTheWir: Natas1  (0) 2017.02.13
OverTheWir: Natas0  (1) 2017.02.13