ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <Webhacking.kr> old-25
    Wargame/Webhacking.kr 2021. 12. 19. 01:45

    old-25

    위 내용은 리눅스에서 "ls -l"을 사용한 것으로 보인다.

    URL Query에 "?file=hello"으로 보아 GET 방식으로 파일명을 전달하는 것 같다.

     

    URL Query에 "?file=flag"을 입력하면

    FLAG가 코드 안에 있다는 메시지를 출력한다.

    php 코드는 서버 내에 저장되어 있다. 이런 경우 "LFI vulnerability" 기법을 수행할 수 있다.

     

    LFI(Local File Inclusion) 취약점은 파일이 공격 대상의 서버에 위치할 때 사용할 수 있는 방법이다.

    해당 취약점은 php로 만들어진 웹 사이트에서 include, require, fopen 등의 함수를 사용해 받아온 입력값을 경로에 추가하기 때문에 발생한다.

     

    PHP 버전 5 전에는 경로 값에 NULL Byte를 추가하는 NULL Byte Injection을 시도해서 LFI 취약점을 공격했지만, PHP 버전 5 이후로는 PHP wrapper를 이용해야 한다.

     

    PHP wrapper는 개발자들이 사용하는 도구로, 여러 종류가 있다.

    https://www.php.net/manual/en/wrappers.php

     

    이 중 LFI 공격을 하면서 유용하게 쓰이는 wrapper는 expect://, php://filter, zip://이 있다.

    expect://

    expect:// wrapper의 경우, system command를 실행한다. expect://ls를 통해 system command를 살펴볼 수 있다.

    php://filter

    php://filter의 경우, 서버 내부의 파일을 볼 수 있다.

    zip://

    zip://의 경우, zip 파일의 압축을 풀고, 압축을 푼 파일 안에 있는 코드를 실행한다.

     

    따라서, 이 문제에서는 PHP://filter를 사용한다.

     

    PHP://filter wrapper는 encode/decode 옵션을 사용하여 서버 내의 파일을 볼 수 있다.

    ex) www.[공격할 웹 사이트의 주소]/?file=php://filter/convert.base64-encode/resource=[파일이름]

    위 URL을 통해 파일의 내용을 base64 형식으로 암호화된 상태로 볼 수 있다.

     

    flag.php안에 FLAG가 들어있다고 했으므로, flag.php의 파일을 읽어야 한다.

    따라서 "http://webhacking.kr:10001/?file=php://filter/convert.base64-encode/resource=flag" 를 입력하면

    convert.base64-encode를 통해 base64로 인코딩했으니, 이 값을 base64로 디코딩해보면

    <?php
      echo "FLAG is in the code";
      $flag = "FLAG{this_is_your_first_flag}";
    ?>

    위와 같은 PHP 구문이 나타나고, flag 값을 확인할 수 있다.

     

    이 flag 값을 Webhacking 사이트의 Auth 페이지에 입력하면

    문제를 해결할 수 있다.

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

    <Webhacking.kr> old-28  (0) 2021.12.25
    <Webhacking.kr> old-29  (0) 2021.12.21
    <Webhacking.kr> old-33  (0) 2021.12.15
    <Webhacking.kr> old-26  (0) 2021.12.12
    <Webhacking.kr> old-27  (0) 2021.12.12
Designed by Tistory.