ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Web Exploitation] The Vault
    Wargame/picoCTF 2018 2019. 4. 3. 17:58

    문제

    문제에서 제시된 링크에 접속하면 로그인 페이지와 함께 login.php의 소스 코드 링크가 나타난다. 

    로그인 페이지 + login.php 소스 코드 링크

     

    login.php의 소스 코드를 확인해보자.

    login.php 전체 소스 코드

     

    위에서부터 확인해보면, username과 password는 모두 POST 방식으로 전송되고, SQL 쿼리를 통해 username과 password가 모두 일치해야만 로그인이 되는 것을 알 수 있다.

    아래 validation check 코드를 보면, preg_match 함수를 통해 OR 또는 or을 필터링한다는 것을 알 수 있다. 이 때 주의할 점은, preg_match 함수는 $username에만 적용된다는 것이다. $password_match 변수를 보면, preg_match의 대상이 $password가 아닌 $username이므로, $password는 OR 또는 or이 필터링되지 않는다.

    preg_match 함수를 이용한 "or" 필터링

     

    따라서 Username 칸에는 아무거나 입력하고 (공백도 가능), Password에는 ' or '1'='1 을 입력하여 SQL 인젝션을 시도하면 성공적으로 로그인이 되고 Flag가 나타난다.

    SQL 인젝션으로 로그인
    로그인 성공!

     

    'Wargame > picoCTF 2018' 카테고리의 다른 글

    [Web Exploitation] Buttons  (0) 2019.04.03
    [Web Exploitation] Secret Agent  (0) 2019.04.03
Designed by Tistory.