Today I Learned …

[Lord of SQL Injection] 20번 dragon 풀이 본문

Wargame/Lord of SQL Injection

[Lord of SQL Injection] 20번 dragon 풀이

염베리 2021. 12. 14. 01:33

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


이전 문제

https://choco4study.tistory.com/108

 

[Lord of SQL Injection] 19번 xavis 풀이

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

choco4study.tistory.com


20번 문제 dragon 분석 및 풀이

 

 

20번 문제는 다음과 같다.

 

 

주어진 쿼리문을 보겠다.

$query = "select id from prob_dragon where id='guest'# and pw='{$_GET[pw]}'";

첫번째 조건절 뒤에 #을 넣어서 뒷부분을 날려버리고 있다.

 

스터디 초반에 로그인 로직 5가지 유형을 개발할 때, 조건절이 개행 처리된 쿼리에는 주석을 주입해도 원하는대로 처리되지 않음을 경험했었다.

이 점에 착안해서 개행 문자를 이용해주면 될 것 같다.

 

즉, 쿼리문을 다음과 같이 변조할 생각이다.

$query = "select id from prob_dragon where id='guest'# and pw='
	  and pw='' or id='admin'";

위 쿼리문은 다음 쿼리문과 동일하게 동작한다.

$query = "select id from prob_dragon where (id='guest' and pw='') or id='admin'";

따라서 정상적으로 admin 계정을 fetch 해오게 된다.

 

개행 문자인 \n 은 url encoding을 거쳐 %0a로 입력해준다.

 

입력할 답은, %0a and pw='' or id='admin 이다.

 

답을 넣어보면,

 

 

20번 문제가 풀린다.

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