본문 바로가기
3. 웹 애플리케이션 취약점 진단/Lord of Sql Injection

lord of sql injection 16번 - succubus

by Robert8478 2023. 12. 22.

이번 문제는 전문제랑 비슷하게 싱글쿼터가 필터링 되는 문제다.
저번문제는 like의 특성을 이용했는데 이번엔 조금 헷갈린다.
그런데 여기서 잘 보면 \ 가 필터링 되지 않는것 같다.

id에 \를 넣었더니 쿼리에 들어갔다. 이 특수문자를 활용해 위 구문을 우회할 수 있다.
싱글쿼터 앞에 \를 붙이면 해당 싱글쿼터는 문자열로 취급이 된다.
이를 이용해서 위 구문의 싱글쿼터 4개를 이용해서 통과할수 있는데 where id='' and pw='' 가 있다면 where id='\' and pw='' 이런식으로 넣어주면 \' 이 빨간색으로 칠한 싱글쿼터가 문자열, 즉 그냥 id값의 일부로써 들어가는 것이다.
만약 id값이 admin인 것을 패스시킨다면 어렵겠지만 id값은 무엇이든 상관 없으니 그대로 문자열화 시키면 된다. 그리고 pw 안에 or 1=1 --+- 를 넣어준다면 where id='\' and pw=' or 1=1--+-'
위 구문을 보면 이해가 쉬울텐데 즉, id값은 \' and pw= 라는 값으로 들어가게 되는 것이고 그 뒤에 sql인젝션구문이 포함되게 되는것이다.

그렇게 쿼리문을 넣으면 클리어