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)๋นํธ ๋จ์ ํ์