Blind SQL Injection 시 테이블 수
2017. 1. 22. 01:27
Blind SQL Injection시 테이블 수 알아내기
- H3X0R, s1ipper 소속 웹해커 윤석찬(ch4n3) -
블라인드 sqli 수행시 테이블의 개수를 알아낼 때 사용할 수 있는 방법들은 상당히 많다.
(이 문서에서는 쿼리가 요청한 테이블을 * 로 제한한다)
일단 지금 내가 알고 있는 가장 대표적인 방법 2개는
1) union based 인젝션:
union select 1, 2, 3, n
이렇게 union의 select 문을 하나씩 늘려가면서 찾는 방법이 있다. 하지만, 거의 모든 웹사이트나 워게임에서는 기본적으로 select와 union을 막아놓는다.
심지어 쿼리가 너무 길어서 보기 되게 싫다
2) order by 인젝션:
위 방법에서 진화한 방법이 이 인젝션 방법인데,
select * from [table_name] order by 1
. . . .
select * from [table_name] order by n
만약 n 쿼리가 처음으로 거짓이라면 테이블의 수는 (n-1)개라는 것을 알아낼 수 있다.
그리고 오늘 처음 알아낸 쿼리를 발표하겠다.
3) procedure analyze() 함수를 이용함
select * from [table_name] limit 0,1 procedure analyze()
select * from [table_name] limit n,1 procedure analyze()
만약 n을 넣은 값이 처음으로 거짓이 되었다면 테이블의 개수는 (n-1)개라고 할 수 있다.
(물론, limit가 필터링되었으면 지못미..)
생각보다 굉장한 쿼리였다.
/*
* 다른 웹해커분들처럼 엄청 열심히 해야겠다. 그들을 절대 못따라잡는다고 생각하지 않는다.
* 나도 충분히 노력하면 할 수 있을 것이다. 이글을 읽는 당신도 파이팅!
*/
'Hacking > Web.' 카테고리의 다른 글
mysql error based sql injection (0) | 2017.01.25 |
---|---|
MySQL procedure analyze()를 이용한 SQLi (0) | 2017.01.22 |
Error Based SQLi (2) | 2017.01.20 |
SQLi 문자열 비교(?) (0) | 2017.01.12 |
[SQLi] like 비교에서의 blind injection (0) | 2016.12.17 |