이젠 대충 감이 온다.
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
이렇게 보낸다면 이 문제가 풀린다.
'보안공부 > Lord of SQLInjection 풀이' 카테고리의 다른 글
Lord of SQLInjection BUGBEAR 풀이 (0) | 2024.10.15 |
---|---|
Lord of SQLInjection Giant 풀이 (0) | 2024.10.15 |
Lord of SQLInjection Assasin 풀이 (0) | 2024.10.15 |
Lord of SQLInjection Cobolt 풀이 (0) | 2019.10.24 |
Lord of SQLInjection Gremlin 풀이 (0) | 2019.10.23 |