바로 소스부터 보겠다.

 

 

sql injection문제의 냄새가 풀풀 풍긴다.

 

쿼리의 결과가 2가 나와야지 문제가 풀리는 듯 하다. 문자열 2는 필터링 되어있다.

 

일단 랜덤값에 따라서 괄호 감싸고 있는 갯수는 계속 바뀌는데, 어차피 20%확률이므로 하나 골라서 여러번 찍으면 한번은 통과할 듯 하다.

 

\\s가 필터링으로 있어서 white space도 필터링 된다. 따라서 공백 우회를 위해서 괄호를 활용하고, 2라는 문자열 우회를 위해서 char(50)라는 함수를 사용할 것이고, union을 사용해서 '2'값을 결과에 밀어넣을 것이다.

-가 필터링 되어있으므로 주석에 -- 대신 #을 사용하면 된다.

 

최종 페이로드는 99)union(select(char(50)))# 이 된다.

 

5번 정도 시도하니 간단히 풀렸다.

+ Recent posts