[16] succubus
문제
풀이
싱글쿼터 우회에는 두 가지 방법이 있다.
첫번째는 그냥 더블쿼터를 쓰는 것이다.
그러나 더블쿼터로는 서버측 쿼리문에 열려있는 싱글쿼터를 닫아줄 수가 없기 때문에 쿼리문을 원하는 방향으로 아예 틀어줄 수는 없다.
두번째는 아주 한정적인 상황에서만 쓸 수 있는 방법이다.
이번 문제처럼 두개 이상의 파라미터를 받고 있을 때, 그리고 둘 모두 싱글쿼터에 감싸져 있을 때만 사용할 수 있다.
그 내용은 다음과 같다.
id=’ ‘ and pw=’ ‘
id=’\’ and pw=’ or 1=1 %23 ‘
첫번째 파라미터로 역슬래시(\)를 줘서 바로 뒤의 싱글쿼터를 일반 문자로 이스케이프 시켜주는 것이다.
그렇게 해주면 빨간색 부분이 통째로 id의 파라미터가 되어버린다.
그 후, 두번째 파라미터로 or 1=1 %23 을 주면 문제없이 첫번째 레코드를 뽑아올 수 있게 된다.
(∵ FALSE or TRUE ⇒ TRUE 가 되므로)
따라서, 입력할 답은 다음과 같다.
1
id=\&pw=or 1=1 %23