Today I Learned …

[Lord of SQL Injection] 16번 succubus 풀이 본문

Wargame/Lord of SQL Injection

[Lord of SQL Injection] 16번 succubus 풀이

염베리 2021. 12. 9. 23:25

* 개인적인 공부 내용을 기록한 글입니다.


이전 문제

https://choco4study.tistory.com/103

 

[Lord of SQL Injection] 15번 assassin 풀이

* 개인적인 공부 내용을 기록한 글입니다. 이전 문제 https://choco4study.tistory.com/102 [Lord of SQL Injection] 14번 giant 풀이 * 개인적인 공부 내용을 기록한 글입니다. 이전 문제 https://choco4study.ti..

choco4study.tistory.com


16번 문제 succubus 분석 및 풀이

 

 

16번 문제는 다음과 같다.

 

 

보자마자 드디어 그 문제구나! 싶었다.

 

싱글쿼터 우회에는 두 가지 방법이 있다.

 

첫번째는 그냥 더블쿼터를 쓰는 것이다.

그러나 더블쿼터로는 서버측 쿼리문에 열려있는 싱글쿼터를 닫아줄 수가 없기 때문에 쿼리문을 원하는 방향으로 아예 틀어줄 수는 없다.

 

두번째는 아주 한정적인 상황에서만 쓸 수 있는 방법이다!

이번 문제처럼 두개 이상의 파라미터를 받고 있을 때, 그리고 둘 모두 싱글쿼터에 감싸져 있을 때만 사용할 수 있다.

그 내용은 다음과 같다.

 

id='  ' and pw='  '

id='\' and pw=' or 1=1 %23 '

 

바로 요것이다.

첫번째 파라미터로 역슬래시(\)를 줘서 바로 뒤의 싱글쿼터를 일반 문자로 이스케이프 시켜주는 것이다.

그렇게 해주면 빨간색 부분이 통째로 id의 파라미터가 되어버린다.

 

그 후, 두번째 파라미터로 or 1=1 %23 을 주면 문제없이 첫번째 레코드를 뽑아올 수 있게 된다.

(∵ FALSE or TRUE ⇒ TRUE 가 되므로)

 

따라서, 입력할 답은

 

id=\&pw=or 1=1 %23

 

이다.

 

답을 넣어보면,

 

 

16번 문제가 풀린다.

프로필사진
berry
FE Developer, loves React & better DX
Comments