본문 바로가기

보안공부/Lord of SQLInjection 풀이

Lord of SQLInjection Succubus 풀이

이젠 대충 감이 온다.

single quote(')와 다른 데이터베이스로 넘어갈 수 없도록 기본적인 쿼리 보호만을 걸어둔 것을 알 수 있다.

 

또한, id값과 pw값을 한 쿼리 안에서 모두 해결하기 때문에 이번 문제는 더욱 쉬웠다.

backslash(\)로 id 쿼리에 있는 single quote(')를 문자열로 인식하도록 만들어주면 해당 쿼리는 ' and pw='' 를 id에 해당하는 값으로 인식하게 됨을 알 수 있다.

 

이를 활용한다면 id 뒷 부분의 single quote(')를 문자열로 처리하도록 만들고, pw에 있는 single quote(')가 닫아주게 된다.

따라서 pw 앞에 있는 ' 가 앞의 구문을 닫아주기 때문에 뒤에 있는 ' 만 %23(#)을 통해 주석 처리해주면 됨을 알 수 있다.

 

그럼 첫 번째 ' 와 두 번째 ' 사이에 새로운 쿼리를 넣을 공간이 생기게 되는데, 이 부분에 || 1=1 #를 넣어주면 무조건 참으로 만들 수 있다.

 

따라서 이 문제를 풀기 위해 보낼 파라미터는 다음과 같아지게 된다.

?id=\&pw=%20||%201=1%20%23

 

이렇게 보낸다면 이 문제가 풀린다.