문제에 제시된 쿼리를 보면 pw 다음에 and 1=0이 나온다. 
pw를 제대로 입력해도 false가 나오게 된다. 
그래서 필터를 보기 위해 php 코드를 보면 싱글쿼터는 막히지 않았다. 그래서 그냥 간단하게 pw에 ' or id='admin#을 해주면 문제가 풀린다.


'Wargame > lord of sqlinjection' 카테고리의 다른 글

Lord of SQLinjection darkknight  (0) 2017.07.30
Lord of SQLinjection golem  (0) 2017.07.30
Lord of SQLinjection vampire  (0) 2017.07.25
Lord of SQLinjection Troll  (0) 2017.07.25
Lord of SQLinjection orge  (0) 2017.07.25


전 문제와 유사하다. 하지만 이번엔 str_replace함수를 통해 admin을 없는 문자로 치환해주는 방법으로 admin에 필터를 걸었다.

하지만 이것도 마찬가지로 대소문자를 구분하지 않기때문에 간단하게 대문자로 집어넣으면 injection이 된다.


'Wargame > lord of sqlinjection' 카테고리의 다른 글

Lord of SQLinjection golem  (0) 2017.07.30
Lord of SQLinjection skeleton  (0) 2017.07.30
Lord of SQLinjection Troll  (0) 2017.07.25
Lord of SQLinjection orge  (0) 2017.07.25
Lord of SQLinjection Darkelf  (0) 2017.07.25

문제 필터를 보면 싱글쿼터를 preg_match로 막고 있고, admin이란 문자를 ereg함수를 통해 정규표현식으로 검사한다.

이 문제는 왜 admin만 ereg함수를 통해 검사하는지 고민하다가 preg_match에서는 대소문자도 구분하도록 하였으나 ereg에선 대소문자를 구분하지 않는다 따라서 이 부분에서 취약점이 발생한다. 

mysql에선 대소문자를 구분하지 않으므로 admin에서 한글자만 대문자로 바꿔도 필터를 우회하여 injection을 할 수 있다.


'Wargame > lord of sqlinjection' 카테고리의 다른 글

Lord of SQLinjection skeleton  (0) 2017.07.30
Lord of SQLinjection vampire  (0) 2017.07.25
Lord of SQLinjection orge  (0) 2017.07.25
Lord of SQLinjection Darkelf  (0) 2017.07.25
Lord of SQLinejction wolfman  (0) 2017.07.25

+ Recent posts