Write-up/LOS

los 1번 gremlin 문제 [sql]

연양 2019. 11. 21. 14:25

 

los 1번 문제 gremlin문제이다. php안에 있는 코드를 highlight_file이라는 함수를 이용해서 소스코드를 출력해 주고 있다. 

 

preg_match라는 정규표현식 함수를 이용해서 검사하고 있는데 여기서 정규표현식이란, 문자열에서 특정한 규칙을 가지는 문자열의 집합을 찾아내기 위한 검색 패턴이다. 

 

preg_match 해당 문자열에서 전달받은 정규 표현식과 일치하는 패턴을 검색 후 존재하면 1, 존재하지 않을경우 0을 반환. 

 

 즉, 여기서는 get으로 받는 id와 pw라는 변수에서  preg_match를 이용하여 "prob" , "_" , "." , "( )" 이 포함된 경우, "no hack"이라는 문장을 띄우면서 exit하게 된다. 

 

그리고 코드를 계속 읽어보면 result라는 변수와 $query라는 변수가 보이는데 result변수가 query에서 받은 id와 pw값을 result라는 변수에 넣어주겠다는 의미이고 이 result라는 변수에서 id가 존재하기만 하면 solve가 되어지게 php코드가 작성이 되어있다. 

 

따라서 나는 여기에서 id 에 admin'-- - 을 넣어주었다. 그러면 id는 admin이 들어가게되고 그 뒤는 주석처리가 되어지는 쿼리가 들어가게 된다. 

 

GREMLIN Clear라는 문장이 뜨면서 문제가 풀렸다.