no, id, pw 를 입력을 해서 로그인할 수 있는 페이지를 볼 수 있다. 로그인을 해보면 아래와 같이 Success - guest 를 볼 수 있다. no 부분에 ||를 이용해서 SQL Injection이 되는 지 확인해보면 로그인이 되는 것을 볼 수 있다. 이를 이용해서 id 값의 첫 글자를 비교해보면 3가지 결과를 얻을 수 있다.0x66(f) 와 비교하였을 경우 해당하는 값은 참이 될 수 없기 때문에 Failure이 발생한다. 0x67(g) 와 비교하였을 경우 guest가 있기 때문에 참이 된다. 0x61(a) 와 비교하였을 경우 admin이 있기 때문에 참이 되고 guset와 달리 admin password를 입력하는 부분을 볼 수 있다. 값을 입력해보면 Wrong 이 발생한다. pw의 길이가 1..
문제 페이지를 보면 값을 입력하여 전송할 수 있는 부분을 볼 수 있다. 다른 정보를 더 얻기 위해서 소스를 보면 아래와 같이 소스 파일을 제공하는 것을 볼 수 있다. 소스 파일을 보면 값을 입력하여 전송을 하면 POST 방식으로 값을 전달을 하고 값 중에서 \(backslash)가 있을 경우 제거를 하고 '(single-quote)가 있을 경우에 '(single-quote)를 하나 더 생성하고 길이가 15자 이하만 Query에 전달을 하여 good을 출력하게 된다. 즉, 입력하는 값을 이용하여 항상 참이 되도록 만들어 주면 문제를 풀 수가 있다. 그리고 소스상에 Query를 보면 id='$_POST[id] 로 되어 있다. 즉, '(single-quote)를 입력해서 해당 Query가 에러가 발생하지 않도..