id 뒤에 주석이 있어서 pw에 무슨 값을 입력해도 의미가 없어지는 문제입니다.


하지만 #으로 주석 처리할 경우 한 줄만 주석이 되므로 개행을 하게 되면 주석을 피할 수 있고,

개행을 하더라도 ';' 을 만나지 않는 이상 한개의 Query로 인식하게 됩니다.


보통 개행으로 사용하는 문자는 %0a 입니다.



그렇게 생각하고 처음에 한 방법은 다음과 같습니다.

';' 앞에는 %0a를 넣어서 빈칸으로 보입니다.


해당 Query에 별다른 문제가 없어 보이는데 실상은 Query를 두개 수행한 것이라

첫 번째 Query인 select id from prob_dragon where id='guest' 의 결과가 앞에 있기에 풀리지 않습니다.

(근데 왜 "Hello guest"도 안 나올까요...)



두 개의 Query로 만들 생각만 계속했었는데.. 한 문장으로 해결이 가능 했습니다.

다음과 같이 and pw='' 를 먼저 입력하고 뒤에 or을 입력하면 연산자 우선순위로 인해 and를 먼저 계산하게 됩니다.


id='guest'# and pw=''%0a and pw='' or id='admin'%23'

위와 같이 and 은 거짓으로 되지만 or 연산으로 id='admin' 값을 찾아오게 됩니다.

'WarGame > LOS(Lord of SQL)' 카테고리의 다른 글

[LOS] dark_eyes  (0) 2018.10.12
[LOS] iron_golem  (1) 2018.10.11
[LOS] xavis  (0) 2018.10.10
[LOS] nigthmare  (0) 2018.10.08
[LOS] succubus  (0) 2018.10.08

+ Recent posts