wargame.kr login filtering 문제 풀이
이 문제에 들어가면 위와같은 화면이 출력되는데 우선 소스코드를 확인해보자. 이런 코드가 있는데 취약점은 바로 if 구문이다. 여기서 $row['id] 값을 조건으로 확인하면서 그 안의 if 문에서는 내가 입력한 id 가 guest 인지 확인한다. 만약 쿼리를 실행 한 결과가 있다면, 해당 id가 guest 혹은 blueh4g 이라면 your account is blocked을 출력 해 준다. 그런데 이 때, ==를 사용하며 비교 대상은 쿼리 결과로 나온 $row['id']가 아니라 내가 입력 한 $id이다. 여기서 mysql 은 대소문자를 구분하지 않기 때문에 내가 id 값으로 Guest 라는 값을 넘겨주어도 guest 라는 값을 찾게된다. id에 Guest pw에 guest 를 입력하면 문제가 풀린다.
2019.11.09