본문 바로가기

web/Lord of SQLInjection

Lord of SQLInjection - 20번 : dragon

문제 살펴보기

los dragon 문제

 

해당 query를 보면 자체적으로 "and pw=" 부분을 주석처리하고 있다.

풀이에 필요한 코드를 보도록 해보자.

 

 

 

 

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

                                 ...
                                 
$result = @mysqli_fetch_array(mysqli_query($db,$query)); 
                                 ...

                                 if(
$result['id'] == 'admin'solve("dragon");

 

pw 파라미터를 통해 데이터를 전달할 수 있는데 해당 부분이 #으로 주석처리 되어 있다.

그런데 해당 select문이 id='admin'인 행을 반환하면 문제가 풀린다고 한다.

바로 풀어보도록 하자.

 

 

 

 

 

문제 풀이 과정

#은 해당 줄에서 #이후의 내용을 주석처리한다.

그렇다면 #과 같은 줄을 사용하지 않으면 되는 문제이다.

\n을 통해 줄바꿈을 해주면 #으로 주석처리 되는 부분을 빠져나갈 수 있다.

다음 줄에서 and 1=0을 통해 id='guest' and ~ 부분을 거짓으로 만들고,

or id='admin'# 을 통해 select 문이 id='admin'인 행을 반환하게 하면 된다.

 

 

 

 

 

dragon clear

 

페이로드 : ?pw=%0a and 1=0 or id='admin'%23

 

 

 

 

 

조금만 생각하면 풀 수 있는 문제였다.

xavis 문제에 비하면 매우 선녀...