Today I Learned …

[Lord of SQL Injection] 10번 skeleton 풀이 본문

Wargame/Lord of SQL Injection

[Lord of SQL Injection] 10번 skeleton 풀이

염베리 2021. 12. 8. 03:11

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


이전 문제

https://choco4study.tistory.com/97

 

[Lord of SQL Injection] 9번 vampire 풀이

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

choco4study.tistory.com


10번 문제 skeleton 분석 및 풀이

 

 

10번 문제는 다음과 같다.

 

 

solve의 조건은 id==admin 이다.

 

준비된 쿼리문은 다음과 같다.

$query = "select id from prob_skeleton where id='guest' and pw='{$_GET[pw]}' and 1=0";

지금까지 해온 것처럼,

$_GET[pw] 부분에 적절한 쿼리문을 넣어 id='admin'이 정상 처리되게끔 해주면 된다.

 

$_GET[pw]를 기준으로

앞부분의 쿼리는 싱글쿼터를 하나 삽입함으로써 FALSE로 만들어주고,

뒷부분은 주석 처리하여 무시되게끔 해주면 될 것 같다.

 

즉, 목표는 준비된 쿼리문을 다음과 같이 변조해주는 것이다.

$query = "select id from prob_skeleton where (id='guest' and pw='') or id='admin' #' and 1=0";

① 논리연산자의 실행 순서에 따라 앞부분 조건절은 하나로 묶여 FALSE로 처리됨

② || id='admin' 을 삽입하여 id가 admin인 레코드를 뽑아옴

③ 뒷부분은 주석으로 날려줌

 

복잡해보이지만 지금까지와 다를 바 없다.

 

입력할 쿼리문은

 

' or id='admin' %23

 

이다.

 

답을 넣어보면,

 

 

10번 문제가 풀린다.

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