Blind SQL Injection ์ด๋ž€


- sql ์งˆ์˜๋ฌธ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ๊ณผ ๊ฑฐ์ง“์— ๋”ฐ๋ผ ์‘๋‹ต์ด ๋‹ฌ๋ผ์งˆ ๋•Œ

   ์ด ์‘๋‹ต๊ฐ’์˜ ์ฐจ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๋ก ํ•œ๋‹ค.

 

Blind SQL Injection์˜ ํŠน์ง•

 

-DB๋ณ„๋กœ ์ฐจ์ด์ ์ด ๋ณ„๋กœ ์—†๋‹ค
-๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋จ
-์„œ๋ฒ„์— ์‘๋‹ต๊ฐ’์„ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๋ก 

- SQLi ๋ชจ๋“  ๊ณณ์— ์ ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค
- ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.
- python์„ ํ†ตํ•ด ์ž๋™ํ™”๋ฅผ ์‹œ์ผœ์ค„ ์ˆ˜ ์žˆ๋‹ค.

- Blind-BASED ์ค‘์—์„œ Time-based ๊ฐ€ SQLi ์ค‘์—์„œ ๊ฐ€์žฅ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.


์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜


(1) limit
- ๋ฐ์ดํ„ฐ๊ฐ€ ํ•˜๋‚˜์˜ ํ–‰๋งŒ ์ถ”์ถœ๋  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฌธ๋ฒ•

select ~~~~ limit [์‹œ์ž‘ ์œ„์น˜:0๋ถ€ํ„ฐ ์‹œ์ž‘],[๊ฐœ์ˆ˜]


ex)
limit 0, 1 -> 0์—์„œ๋ถ€ํ„ฐ 1๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•œ๋‹ค. (0 ~ 1)
limit 0, 3 -> 0์—์„œ๋ถ€ํ„ฐ 3๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•œ๋‹ค. (0 ~ 2)
limit 3, 2 -> 3์—์„œ๋ถ€ํ„ฐ 2๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•œ๋‹ค. (3 ~ 5)

(2) substring
- ๊ธ€์ž๋ฅผ ์ž˜๋ผ๋‚ผ ๋•Œ ์‚ฌ์šฉ


'string' , [์‹œ์ž‘ ์œ„์น˜:1๋กœ ์‹œ์ž‘], [๊ฐœ์ˆ˜]

 

ex)
substring('string', 1, 1) -> s์ถœ๋ ฅ
substring('string', 3, 1) -> r์ถœ๋ ฅ

(3) ascii

- ์•„์Šคํ‚ค ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด์„œ ๋ฌธ์ž๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
abcd ~
1234 ~


ex)
ascii('a') = 39

 

Blind SQL Injection์˜ ์ข…๋ฅ˜

 

content -based sqli
- ๊ฒŒ์‹œํŒ์ฒ˜๋Ÿผ ์ฐธ,๊ฑฐ์ง“์„ ํŒ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ
resaponse-based sqli
- ๊ฒŒ์‹œ๊ธ€ ์ž์ฒด๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ 
time-based sqli
- ๋‹ค ์•ˆ๋  ๊ฒฝ์šฐ
- ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์˜คํƒ ๋ฐœ์ƒ
- ์˜ˆ์ธกํ•˜์ง€ ๋ชปํ•œ ์—๋Ÿฌ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์กด์žฌ


ํƒ์ƒ‰ ๋ฐฉ๋ฒ•

 

1)์ˆœ์ฐจ ํƒ์ƒ‰

- ์ œ์ผ ๊ฐ„๋‹จํ•˜๋‹ค.

- ๋งŽ์€ ์š”์ฒญ์„ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํšจ์œจ์ ์ด๋‹ค.

- ๋นˆ๋„์ˆ˜๋ฅผ ์šฐ์„  ๋ฐฐ์น˜ํ•˜์—ฌ ์š”์ฒญ์„ ์ค„์ผ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๊ทผ๋ณธ์ ์œผ๋กœ๋Š” ์ค„์ผ ์ˆ˜ ์—†๋‹ค.

2)์ด์ง„ ํƒ์ƒ‰

3)๋น„ํŠธ ๋‹จ์œ„ ํƒ์ƒ‰

 

+ Recent posts