'SQL Injection'에 해당되는 글 2건

  1. 2017.02.28 sql injection 툴
  2. 2017.02.28 blind sql injection - 기초

sql injection 툴

SQL Injection 2017. 2. 28. 14:25

이중에서 sqlmap이 좋은거 같음.




안녕하세요.

 

조금 된 SQL 툴들 아래 나열합니다.

 

1. SQLIer 취약점이 있는 URL을 검사하고 사용자의 개입없이 SQL Injection 취약점을 익스플로잇하기 위해 필요한 정보를 점검합니다다운로드

2. SQLbftools 
블라인드 SQL Injection 공격을 사용하여 MySQL의 정보를 가져오는 시도를 하는 도구의 모음입니다다운로드

3. SQL Injection Brute-forcer - SQL Injection 
공격 취약점을 찾고 이를 이용하여 공격하는 자동화 도구입니다사용자가 작업하는 내용을 볼 수 있으며블라인드 SQL 인젝션을 이용합니다다운로드

5. SQL Brute - 
블라인드 SQL 인젝션 취약점을 사용하여 데이터베이스에서 데이터를 추출해내는 무작위 도구입니다. MS SQL 서버의 시간오류 기반으로 익스플로잇을 수행합니다오라클의 경우 오류를 기반으로 합니다이 프로그램은 Python으로 작성되었으며 멀티 스레드로 동작하며 표준 라이브러리를 사용합니다다운로드

5. BobCat - SQL Injection 
취약점의 잇점을 이용하는 감사 도구입니다사용자가 사용하는 애플리케이션이 액세스하는 테이블에서 데이터를 가져올 수 있습니다다운로드

6. SQLMap 
블라인드 SQL Injection을 자동으로 수행하는 도구로 phthon으로 개발되었다다운로드

7. Absinthe - GUI 
기반의 도구로 블라인드 SQL Injection 취약점에 이용하여 데이터베이스의 스키마와 목록을 자동화 과정으로 다운로드합니다다운로드

8. SQL Injection Pen-testing Tool - 
웹 애플리케이션에서의 취약점을 찾아 데이터베이스를 점검하도록 설계된 GUI 기반의 도구다운로드

9. SQID - SQL Injection Digger. 
웹 사이트의 통상적인 오류와 SQL Injection을 찾는 명령행 기반의 도구웹 페이지에서 SQL Injection 이 가능한 부분을 찾아내어 취약점을 입력하는 폼을 테스트한다다운로드

10. Blind SQL Injection Perl Tool - bsqlbf
 SQL Injection에 취햑한 웹 사이트에서 정보를 가져오도록 작성된 펄 스크립트다운로드

11. SQL Power Injection Injector - 
이 프로그램은 웹페이지에서 SQL 명령어를 삽입하는 테스트를 수행합니다멀티 스레드 방식으로 블라인드 SQL Injection 공격을 자동화하여 실행합니다다운로드 

12. FJ-Injector Framework - 
웹 애플리케이션에 SQL Injection 취약점이 있는지 검사하기 위해 디자인된 오픈 소스 무료 프로그램입니다. HTTP 요청을 가로쳐서 변경하기 위한 프록시 기능도 제공합니다. SQL Injection 익스플로잇을 자동화하여 수행합니다다운로드

13. SQLNinja - MS SQL 
서버를 백 엔드 데이터베이스로 사용하는 웹 애플리케이션의 SQL Injection 취약점을 익스플로잇하는 도구입니다다운로드

14. Automatic SQL Injector - SQLNinja
와 유사한 도구로오류 코드가 반환되는 SQL Injection 취약점을 자동으로 찾아 줍니다다운로드

15. NGSS SQL Injector - 
데이터베이스에 저장된 데이터를 액세스하기 위한 SQL Injection취약점을 이용하여 익스플로잇합니다. Access, DB2, Informix, MSSQL, MySQL, Oracle, Sysbase 등 다양한 데이터베이스를 지원합니다다운로드

'SQL Injection' 카테고리의 다른 글

blind sql injection - 기초  (0) 2017.02.28
Posted by wakira
,

펌해옴 : http://kcats.tistory.com/121


The_basic_of_Blind_SQL_Injection_PRIDE.pdf

blind_sql_injection-mysql_5.pdf



이 포스팅은 위 2개의 파일을 읽고 blind sql injection 에 대해 정리한 글이다.


저작권에 문제가 된다면 바로 삭제할겟습니다!


일반적인 sql injection은 웹 시스템이 쿼리를 이용하여 데이터베이스를 조회하는 과정을 


우회하는 방법이다.




▲ 서버에서 요청하는 입력 폼



blind sql injection은 다음과 같은 특정한 상황에서 사용 가능하다.

1. 쿼리문으로 참과 거짓 일때의 서버의 반응을 알 수 있어야 함

2. 원하는 결과를 얻을 데이터베이스의 이름을 알 수 있어야 함


이러한 상황일때  쿼리 문의 asciilimitsubstr 등의 구문을 이용한다.

하나하나 살펴보도록 하자.


먼저, ascii는 ascii(문자) 를 하였을때 해당 문자의 아스키코드를 반환한다. 

이에 대한 자세한 설명은 아래의 링크에 있다.

http://www.w3resource.com/mysql/string-functions/mysql-ascii-function.php

풀어 설명하자면, ascii(a)를 하면 a의 아스키코드인 숫자  97이 반환된다

아스키코드표 링크



둘째, limit은 출력의 개수를 제한할 수 있는 함수다.

limit 200 이라고 하면 출력 개수를 최대 200개로 제한한다는 것이고

limit 2,10 이라고 하면 두번째 행부터 10행까지만 출력한다는 것이다.

http://www.razorsql.com/articles/mysql_limit_query.html


셋째, substr은 특정 문자열을 원하는 만큼 자를 수 있다. 사용법으로는

 substr(문자열, 문자열에서 자르고자 하는 문자열의 처음 위치, 자르고자 하는 문자열의 길이이다.

http://www.w3resource.com/mysql/string-functions/mysql-substr-function.php








substr, ascii(), limit을 이용하는 것을 토대로 이제는 실전적으로 가보겠다.


INFORMATION_SCHEMA

MYSQL에서 데이터베이스에 대한 메타데이터를 제공하는 스키마이다.

출처 : http://mysqldba.tistory.com/52


INFORMATION_SCHEMA가 가지고 있는 정보를 이용하여야 한다. 이 테이블은 여러 정보를 가지고 있는데 그 중에서도 대표적으로 TABLES 와 COLUMNS이 유용한 정보를 많이 가지고 있다.



위의 그림에서 보는것과 같이 테이블을 만들면 기본적으로 TABLE_TYPE이 BASE_TABLE로 설정되므로 이를 이용하여 쿼리문을 만들수 있다. 쿼리문은 다음과 같다.


select TABLE_NAME from INFORMATION_SCHEMA.TABLES 

where TABLE_TYPE = 'base type' 

라고 쿼리를 입력하면 위의 TABLES의 쿼리와 비슷하게 나올것이다.

( 일단 저기에는 BASE_TABLE외의 다른 타입이 없다) 


여기에 저번 포스팅에서 배운 LIMIT을 사용하면 

select TABLE_NAME from INFORMATION_SCHEMA.TABLES 

where TABLE_TYPE = 'base type'  LIMIT 0,1

라고 쿼리를 입력하면 테이블에서 가장 위의 있는 값인  spt_fallback_db가 나올것이다.


그리고 substr을 사용하면

substr((select TABLE_NAME from INFORMATION_SCHEMA.TABLES 

where TABLE_TYPE = 'base type'  LIMIT 0,1),1,1))   

라고 쿼리를 입력하면 테이블에서 가장 위의 있는 값인  spt_fallback_db에서 가장 첫번째 문자인 's'가 나올 것이다.


마지막으로 ascii()함수를 이용하면

ascii(substr((select TABLE_NAME from INFORMATION_SCHEMA.TABLES 

where TABLE_TYPE = 'base type'  LIMIT 0,1),1,1))

라고 쿼리를 입력하면 테이블에서 가장 위의 있는 값인  spt_fallback_db에서 가장 첫번째 문자인 's'의 아스키코드인 115가 나올것이다.


이에 대한 응용으로 빠르게 아스키코드를 찾기 위해서는 

ascii(substr((select TABLE_NAME from INFORMATION_SCHEMA.TABLES 

where TABLE_TYPE = 'base type'  LIMIT 0,1),1,1)) < 115

이 값이 참이라고 판정된다면 TABLES에 있는 base_type의 첫번쨰 테이블 이름의 첫문자는 s보다 앞에 문자라는 것을 알 수 있다. 

하지만 이렇게 찾으려면 문자열이 길다면 많은 시간이 소모될 것을 알 수 있다. 그러므로 blind sql injection을 대신 해줄 툴을 사용하거나 자신이 직접 코딩하여 만들어서 사용하기를 추천한다.

툴을 정리해둔 포스팅 링크

정리하자면

1. 참과 거짓을 알 수 있는 상황이 있어야함

2. 많은 시간이 걸릴수 있으므로 툴을 사용



'SQL Injection' 카테고리의 다른 글

sql injection 툴  (0) 2017.02.28
Posted by wakira
,