LOS 25단계 시작!
코드를 보니 두 가지 쿼리를 모두 만족해야 문제가 풀린다.
먼저, 첫 번째 쿼리를 만족하기 위한 조건을 생각해보자!
' 이 필터링 되어 있기 때문에 \ 를 이용해서 우회할 수 있다.
id 부분에 \ 를 사용하여 우회해준 뒤, pw 부분에 union을 이용하여 새로운 조건을 만들 수 있다.
위와 같이 id에는 아무 숫자나 주고 pw 부분에서 union을 사용할 때 필드 개수를 맞춰주면
두 번째 쿼리가 출력된다.
두 번째 쿼리를 보니 union 뒤에서 select 했던 1과 2가 각각 id와 pw로 들어간 것을 알 수 있다.
그렇다면, 두 번째 쿼리도 마찬가지로 \ 를 통해 우회하여 id를 admin으로 만들어 주면 될 것 같다.
' 가 필터링 되었으니 문자는 모두 아스키코드나 hex 값으로 변환해줘야 한다.
이번 문제는 char() 함수와 아스키코드를 이용할 것이다.
먼저, 두 번째 쿼리에 들어가야 될 조건은 다음과 같다.
where id='\' and pw=' union select 'admin' #'
이 조건을 출력하기 위해서는 첫 번째 쿼리에서 다음과 같이 출력되도록 조건을 만들어야 한다.
where id='\' and pw= ' or id='admin' union select \, 'union select char(97,100,109,105,110) #'
이 조건을 아스키코드로 변환하여 바꿔주었다.
결과는 굉장히 길었다.
이제 변환한 조건을 첫 번째 쿼리에 대입하여 실행하면 된다.
성공!
'WarGame > LOS (Lord Of SQLInjection)' 카테고리의 다른 글
27단계 : blue_dragon (0) | 2020.01.26 |
---|---|
26단계 : red_dragon (0) | 2020.01.26 |
24단계 : evil_wizard (0) | 2020.01.22 |
23단계 : hell_fire (0) | 2020.01.21 |
22단계 : dark_eyes (0) | 2020.01.21 |