본문 바로가기

War-game/LOS

gremlin

los.rubiya.kr

 

Lord of SQLInjection

 

los.rubiya.kr

SQL Injection 을 훈련하기 좋은 사이트이다.

간단한 가입 절차를 거친 후 로그인하면 첫번째 문제 gremlin 으로 접근가능하다.

[그림 1] gremlin

친절하게 소스코드도 제공되어 있다. 주어진 코드를 분석하여 알맞은 SQL Query 문을 작성해주면 문제가 해결된다.

소스를 보면 입력받은 id와 pw 값을 데이터베이스에서 확인한 후 결과값으로 돌려주는데 해당 결과값에 id 값을 if문으로 검증한다. 

id 부분만 존재하는 것으로 만들면 해결될 것이다.

 

쿼리문을 보면 "select id from prob_gremlin where id='{$_GET[id]}' and pw='{$_GET[pw]}'"; 인데 입력받는 id 부분을 수정해본다.

id 부분에 '(싱글 쿼터)를 사용하면 id='' 처럼 문자열 부분이 끝나게되고 뒷 부분에 다른 쿼리를 넣어주면 문자열이 아닌 쿼리로서 동작하게 된다.

id 가 참(TRUE)으로 동작하게 해야 하므로 or(||) 조건을 이용한다.

그러면 입력값은 '||1 이 될것이다. 

이렇게 처리하면 해결이 가능할까 하면 불가능하다.

위 입력값을 삽입할 경우 쿼리문은 아래와 같은 형태가 된다.

"select id from prob_gremlin where id=''||1' and pw='{$_GET[pw]}'";

and 로 연결되어 들어가는데 이를 해결하기 위해 주석처리를 해준다. 

한 줄 주석의 경우 # 또는 -- 를 사용한다. 

url 코드라 그런지 %23 으로 입력하면 인식하는데 #으로는 인식을 하지 못한다. %23으로 넣어주자.

그러면 id 부분에 들어갈 값은 '||1%23 이 된다. 해당값을 입력하자.

 

입력값은 url 부분에 입력하면 된다.

url 마지막 부분에 입력값 id와 pw 값을 넣어주자. id 값만 있으면 되므로 pw 부분은 주석처리하였다.

?id='||1%23 라고 넣어준다.

 

[그림 2] gremlin clear

 

'War-game > LOS' 카테고리의 다른 글

goblin  (0) 2019.10.23
cobolt  (0) 2019.10.23