SQL Injection

์›น ์‚ฌ์ดํŠธ์˜ ๋ณด์•ˆ์ƒ ํ—ˆ์ ์„ ์ด์šฉํ•ด ํŠน์ • SQL ์ฟผ๋ฆฌ๋ฌธ์„ ์ „์†กํ•˜์—ฌ
๊ณต๊ฒฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ•ดํ‚น ๊ธฐ๋ฒ•์ด๋‹ค.

๋Œ€๋ถ€๋ถ„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๋Œ€๋กœ ํ•„ํ„ฐ๋งํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•œ๋‹ค.

๊ณต๊ฒฉ์ด ์‰ฌ์šด ๋‚œ์ด๋„์— ๋น„ํ•ด ํ”ผํ•ด๊ฐ€ ์ƒ๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์—
๋ณด์•ˆ ์œ„ํ˜‘ 1์ˆœ์œ„๋กœ ๋ถˆ๋ฆด๋งŒํผ ์ค‘์š”ํ•œ ๊ธฐ๋ฒ•์ด๋‹ค.

 

 

 

 

๊ฐ„๋žตํ•œ ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค


์˜ˆ๋ฅผ ๋“ค์–ด ํšŒ์›์ด ์ž์‹ ์˜ ์ผ๋ จ๋ฒˆํ˜ธ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

๊ธฐ๋ณธ์ ์ธ SQL ์ง„ํ–‰์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ผ๋ จ๋ฒˆํ˜ธ ์กฐํšŒ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์›น์„œ๋ฒ„์— ์ด๋ฆ„์ด ๋“ค์–ด๊ฐ€๊ณ  DB์— ์ž…๋ ฅํ•œ ๊ฐ’์ด ์žˆ๋Š”์ง€ ํ™•์ธ ํ›„ ์กด์žฌํ•œ๋‹ค๋ฉด ๋ฒˆํ˜ธ DB๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฒˆํ˜ธ ์กฐํšŒ๋ฅผ ํด๋ฆญํ•˜๋ฉด url์ด http://numbersearch.com/mysearch?=ohyaelim ์ด ๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

๊ทธ๋Ÿผ ๊ณต๊ฒฉ์ž์˜ ์กฐํšŒ๋Š” http://numbersearch.com/mysearch?=blackhat  ์—์„œ ํƒˆ์ทจํ•˜๊ณ  ์‹ถ์€ ์ •๋ณด์˜ ์œ ์ €์ธ ohyaelim์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ค˜์•ผํ•˜๋Š”๋ฐ, ๊ทธ๋ƒฅ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์œผ๋กœ๋Š” ํ˜„์žฌ ๋กœ๊ทธ์ธ ๋œ ์ž์‹ ๊ณผ๋Š” ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์›น์„œ๋ฒ„์—์„œ ์ธ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

๊ทธ๋Ÿฌ๋ฏ€๋กœ ํŠน์ • ์ฟผ๋ฆฌ๋ฌธ์„ ๋„ฃ์–ด์ค€๋‹ค. 'ohyaelim' or '1' = '1' ๊ณผ ๊ฐ™์ด ๋„ฃ์–ด๋ถ€๋… 1๊ณผ 1์€ ๊ฐ™๋‹ค๋ผ๋Š” ๊ตฌ๋ฌธ์ด ์ฐธ์ด๋ฏ€๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.

 

์ด๋Ÿฌํ•œ SQL Injection์˜ ๊ณต๊ฒฉ ๋ฒ”์œ„๋Š” ๋งค์šฐ ๋‹ค์–‘ํ•˜๋‹ค.

bypass
data access
content change
db delete

 

 

 

 

 

๊ณต๊ฒฉ ์ข…๋ฅ˜ ๋ฐ ๋ฐฉ๋ฒ•


Error based SQL Injection

- ๋…ผ๋ฆฌ์  ์—๋Ÿฌ๋ฅผ ์ด์šฉํ•œ SQL Injection

SQL ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ ๋…ผ๋ฆฌ์  ์—๋Ÿฌ๋ฅผ ์ด์šฉํ•œ SQL Injection์€ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๊ณ  ๋Œ€์ค‘์ ์ธ ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์ด๋‹ค.

์•ž์„œ ์‚ดํŽด๋ดค๋˜ ๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์—ฌ๊ธฐ์— ํ•ด๋‹น๋œ๋‹ค. 

 

select * from client where name='ohyaelim' and password='1122'

 

๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๋กœ๊ทธ์ธ์˜ ์˜ˆ๋ผ๋ฉด 

 

select * from client where name='ohyaelim' and password=' or '1'='1

 

์™€ ๊ฐ™์ด ์ž‘์„ฑํ•ด or ์•ž์˜ ๊ฐ’๊ณผ ๋’ค์— ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ฐธ์ด๋ฉด ์ฐธ์ด๋ฏ€๋กœ ์ด ๊ตฌ๋ฌธ ์ž์ฒด๊ฐ€ ์ฐธ์œผ๋กœ ์ธ์‹๋˜์–ด ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

UNION based SQL Injection = UNION

- ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•œ SQL Injection

SQL UNION์ด๋ž€, ์—ฌ๋Ÿฌ๊ฐœ์˜ SQL๋ฌธ์„ ํ•ฉ์ณ ํ•˜๋‚˜์˜ SQL๋ฌธ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. 
์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๊ธฐ์— ์•ž์„œ ์‚ฌ์ „ ์กฐ๊ฑด์ด ํ•„์š”ํ•˜๋‹ค. Union ํ•˜๋Š” ๋‘ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ ์ˆ˜๊ฐ€ ๊ฐ™์•„์•ผ ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ํ˜•์ด ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

UNION๊ณผ UNION ALL๋กœ ๋‚˜๋‰˜๋Š”๋ฐ ์ค‘๋ณต ๊ฐ’์„ ์ œ์™ธ ํ•˜๊ณ  ์•ˆํ•˜๊ณ ์˜ ์ฐจ์ด๋‹ค. 

UNION - ์ค‘๋ณต ๊ฐ’์„ ์ œ์™ธํ•œ๋‹ค.

UNION ALL - ์ค‘๋ณต ๊ฐ’์„ ์ œ์™ธํ•˜์ง€ ์•Š๊ณ  ์ „์ฒด๋ฅผ ํ•ฉ์นœ๋‹ค.

 

์ž…๋ ฅ๊ฐ’์„ title ๊ณผ contents ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ๋ž‘ ๋น„๊ตํ•œ ๋’ค ๋น„์Šทํ•œ ๊ธ€์ž๊ฐ€ ์žˆ๋Š” ๊ฒŒ์‹œ๊ธ€์„ ์ถœ๋ ฅํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ž…๋ ฅ๊ฐ’์œผ๋กœ Union ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์ปฌ๋Ÿผ ์ˆ˜๋ฅผ ๋งž์ถฐ์„œ SELECT ๊ตฌ๋ฌธ์„ ๋„ฃ์–ด์ฃผ๊ฒŒ ๋˜๋ฉด ๋‘ ์ฟผ๋ฆฌ๋ฌธ์ด ํ•ฉ์ณ์„œ์„œ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋กœ ๋ณด์—ฌ์ง€๊ฒŒ ๋œ๋‹ค.

ํ˜„์žฌ ์ธ์ ์…˜ ํ•œ ๊ตฌ๋ฌธ์€ ์‚ฌ์šฉ์ž์˜ id์™€ passwd๋ฅผ ์š”์ฒญํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ์œผ๋กœ ์ธ์ ์…˜์ด ์„ฑ๊ณตํ•˜๊ฒŒ ๋˜๋ฉด, ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ์ •๋ณด๊ฐ€ ๊ฒŒ์‹œ๊ธ€๊ณผ ํ•จ๊ป˜ ํ™”๋ฉด์— ๋ณด์—ฌ์ง€๊ฒŒ ๋œ๋‹ค.

 

( * ๋ฌผ๋ก  ํŒจ์Šค์›Œ๋“œ๋ฅผ ํ‰๋ฌธ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ ์ธ์ ์…˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์—์„œ ์ด๋ฏธ ๊ทธ ์ด์ƒ์˜ ๋ณด์•ˆ์œ„ํ—˜์— ๋…ธ์ถœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณต๊ฒฉ๋„ ์—ญ์‹œ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. )

 

 

 

 

Blind SQL Injection 

- Boolean based Blind SQL Injection

Blind SQL Injection์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ํŠน์ •ํ•œ ๊ฐ’์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ๋ฐ›์ง€ ์•Š๊ณ , ๋‹จ์ˆœํžˆ ์ฐธ๊ณผ ๊ฑฐ์ง“์˜ ์ •๋ณด๋งŒ ์•Œ ์ˆ˜ ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋กœ๊ทธ์ธ ํผ์— SQL Injection์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๊ฐ€์ • ํ–ˆ์„ ๋•Œ, ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜๋Š” ๋กœ๊ทธ์ธ ์„ฑ๊ณต๊ณผ ๋กœ๊ทธ์ธ ์‹คํŒจ ๋ฉ”์‹œ์ง€๋ฅผ ์ด์šฉํ•˜์—ฌ, DB์˜ ํ…Œ์ด๋ธ” ์ •๋ณด ๋“ฑ์„ ์ถ”์ถœํ•ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ์˜ˆ์‹œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด limit ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋งŒ ์กฐํšŒํ•˜๊ณ , SUBSTR ํ•จ์ˆ˜๋กœ ์ฒซ ๊ธ€์ž๋งŒ, ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ASCII ๋ฅผ ํ†ตํ•ด์„œ ascii ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค. ๋งŒ์•ฝ์— ์กฐํšŒ๋˜๋Š” ํ…Œ์ด๋ธ” ๋ช…์ด Users ๋ผ๋ฉด ‘U’ ์ž๊ฐ€ ascii ๊ฐ’์œผ๋กœ ์กฐํšŒ๊ฐ€ ๋  ๊ฒƒ์ด๊ณ , ๋’ค์˜ 100 ์ด๋ผ๋Š” ์ˆซ์ž ๊ฐ’๊ณผ ๋น„๊ต๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ฑฐ์ง“์ด๋ฉด ๋กœ๊ทธ์ธ ์‹คํŒจ๊ฐ€ ๋  ๊ฒƒ์ด๊ณ , ์ฐธ์ด ๋  ๋•Œ๊นŒ์ง€ ๋’ค์˜ 100์ด๋ผ๋Š” ์ˆซ์ž๋ฅผ ๋ณ€๊ฒฝํ•ด ๊ฐ€๋ฉด์„œ ๋น„๊ต๋ฅผ ํ•˜๋ฉด ๋œ๋‹ค.  ๊ณต๊ฒฉ์ž๋Š” ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•˜์—ฌ ๋‹จ๊ธฐ๊ฐ„ ๋‚ด์— ํ…Œ์ด๋ธ” ๋ช…์„ ์•Œ์•„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

ํ•œ๊ธ€์ž์”ฉ ๋Š์–ด์˜จ ๊ฐ’์„ ์•„์Šคํ‚ค์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์‹œํ‚ค๊ณ  ์ž„์˜์˜ ์ˆซ์ž์™€ ๋น„๊ตํ•˜์—ฌ ์ฐธ๊ณผ ๊ฑฐ์ง“์„ ๋น„๊ตํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ๊ฐ€๋ฉฐ ๊ณ„์† ์งˆ์˜๋ฅผ ๋ณด๋‚ด์–ด ์ผ์น˜ํ•˜๋Š” ์•„์Šคํ‚ค์ฝ”๋“œ๋ฅผ ์ฐพ์•„๋‚ด๋Š”๋ฐ ์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ฒฐ๊ณผ๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์–ป์–ด๋ƒ„์œผ๋กœ์จ ๊ณต๊ฒฉ์„ ์ด๋ฃจ์–ด์ง€๊ฒŒ ํ•œ๋‹ค. ๋งŽ์€ ๋น„๊ต ๊ณผ์ •์„ ์š”ํ•˜๋ฏ€๋กœ ์•…์˜์  ๋ชฉ์ ์„ ๊ฐ€์ง„ ํฌ๋ž˜์ปค๋“ค์€ ์ž๋™ํ™”๋œ ํˆด์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๊ฒฉํ•œ๋‹ค. 

 

 

Blind SQL Injection

- Time based SQL

Time Based SQL Injection ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํŠน์ •ํ•œ ์‘๋‹ต ๋Œ€์‹ ์— ์ฐธ ํ˜น์€ ๊ฑฐ์ง“์˜ ์‘๋‹ต์„ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •๋ณด๋ฅผ ์œ ์ถ”ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜๋Š” MySQL ๊ธฐ์ค€์œผ๋กœ SLEEP ๊ณผ BENCHMARK ์ด๋‹ค.

 

์œ„์˜ ๊ทธ๋ฆผ์˜ ์˜ˆ์‹œ์—์„œ ๋กœ๊ทธ์ธ ํผ์— ์ฃผ์ž…์ด ๋˜์—ˆ์œผ๋ฉฐ ์ž„์˜๋กœ abc123 ์ด๋ผ๋Š” ๊ณ„์ •์„ ์ƒ์„ฑํ•ด ๋‘์—ˆ๋Š”๋ฐ ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ abc123’ OR (LENGTH(DATABASE())=1 AND SLEEP(2)) – ์ด๋ผ๋Š” ๊ตฌ๋ฌธ์„ ์ฃผ์ž…ํ•œ ์ƒํ™ฉ์ด๋‹ค. 

 ์ฃผ์ž…๋œ ๊ตฌ๋ฌธ์—์„œ, LENGTH(DATABASE()) = 1 ๊ฐ€ ์ฐธ์ด๋ฉด SLEEP(2) ๊ฐ€ ๋™์ž‘ํ•˜๊ณ , ๊ฑฐ์ง“์ด๋ฉด ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋ฅผ ํ†ตํ•ด์„œ ์ˆซ์ž 1 ๋ถ€๋ถ„์„ ์กฐ์ž‘ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธธ์ด๋ฅผ ์•Œ์•„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ์— SLEEP ์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ์น˜ํ™˜์ฒ˜๋ฆฌ ๋˜์–ด์žˆ๋‹ค๋ฉด, ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ BENCHMARK ๋‚˜ WAIT ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค

BENCHMARK ๋Š”
BENCHMARK(1000000,AES_ENCRYPT('hello','goodbye'));
์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์ด ๊ตฌ๋ฌธ์„ ์‹คํ–‰ ํ•˜๋ฉด ์•ฝ 4.74์ดˆ๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค. 

 

 

Stored Procedure SQL Injection

- ์ €์žฅ๋œ ํ”„๋กœ์‹œ์ €์—์„œ์˜ SQL Injection

stored procedure๋Š” ์ผ๋ จ์˜ ์ฟผ๋ฆฌ๋“ค์„ ๋ชจ์•„ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ๊ฒƒ์ด๋‹ค.

๊ณต๊ฒฉ์— ์‚ฌ์šฉ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์ €์žฅ ํ”„๋กœ์‹œ์ €๋Š” MS-SQL ์— ์žˆ๋Š” xp_cmdshell๋กœ ์œˆ๋„์šฐ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๋‹จ, ๊ณต๊ฒฉ์ž๊ฐ€ ์‹œ์Šคํ…œ ๊ถŒํ•œ์„ ํš๋“ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ณต๊ฒฉ๋‚œ์ด๋„๊ฐ€ ๋†’์œผ๋‚˜ ๊ณต๊ฒฉ์— ์„ฑ๊ณตํ•œ๋‹ค๋ฉด, ์„œ๋ฒ„์— ์ง์ ‘์ ์ธ ํ”ผํ•ด๋ฅผ ์ž…ํž ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฒฉ์ด๋‹ค.

 

 

Mass SQL Injection

- ๋‹ค๋Ÿ‰์˜ SQL Injection ๊ณต๊ฒฉ

 2008๋…„์— ์ฒ˜์Œ ๋ฐœ๊ฒฌ๋œ ๊ณต๊ฒฉ๊ธฐ๋ฒ•์ด๋‹ค.

๊ธฐ์กด SQL Injection ๊ณผ ๋‹ฌ๋ฆฌ ํ•œ๋ฒˆ์˜ ๊ณต๊ฒฉ์œผ๋กœ ๋‹ค๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์กฐ์ž‘๋˜์–ด ํฐ ํ”ผํ•ด๋ฅผ ์ž…ํžˆ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋ณดํ†ต MS-SQL์„ ์‚ฌ์šฉํ•˜๋Š” ASP ๊ธฐ๋ฐ˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, ์ฟผ๋ฆฌ๋ฌธ์€ HEX ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ ํ•˜์—ฌ ๊ณต๊ฒฉํ•œ๋‹ค. ๋ณดํ†ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ’์„ ๋ณ€์กฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•…์„ฑ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ , ์‚ฌ์šฉ์ž๋“ค์ด ๋ณ€์กฐ๋œ ์‚ฌ์ดํŠธ์— ์ ‘์† ์‹œ ์ข€๋น„PC๋กœ ๊ฐ์—ผ๋˜๊ฒŒ ํ•˜๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ๊ฐ์—ผ๋œ ์ข€๋น„ PC๋“ค์€ DDoS ๊ณต๊ฒฉ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

 

 

 

๋Œ€์‘๋ฐฉ์•ˆ


  • ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ 
  • Prepared Statement ๊ตฌ๋ฌธ ์‚ฌ์šฉ
  • Error Message ๋…ธ์ถœ ๊ธˆ์ง€
  • ์›น ๋ฐฉํ™”๋ฒฝ ์‚ฌ์šฉ

 

์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ

SQL Injection ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ฒ•๊ณผ ํ‚ค์›Œ๋“œ๋Š” ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ์ด ํ•„์š”ํ•˜๋‹ค. ์„œ๋ฒ„ ๋‹จ์—์„œ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒ€์ฆํ•ด์•ผ ํ•œ๋‹ค. ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒ€์ฆํ•˜๊ฒŒ ๋˜๋ฉด ์ˆ˜๋งŽ์€ ์ฐจ๋‹จ๋ฆฌ์ŠคํŠธ๋ฅผ ๋“ฑ๋กํ•ด์•ผ ํ•˜๊ณ , ํ•˜๋‚˜๋ผ๋„ ๋น ์ง€๋ฉด ๊ณต๊ฒฉ์— ์„ฑ๊ณตํ•˜๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ณต๋ฐฑ์œผ๋กœ ์น˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋งŽ์ด ์“ฐ์ด๋Š”๋ฐ, ์ด ๋ฐฉ๋ฒ•๋„ ์ทจ์•ฝํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ณต๊ฒฉ์ž๊ฐ€ SESELECTLECT ๋ผ๊ณ  ์ž…๋ ฅ ์‹œ ์ค‘๊ฐ„์˜ SELECT๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ์น˜ํ™˜์ด ๋˜๋ฉด SELECT ๋ผ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ์™„์„ฑ๋˜๊ฒŒ ๋œ๋‹ค. ๊ณต๋ฐฑ ๋Œ€์‹  ๊ณต๊ฒฉ ํ‚ค์›Œ๋“œ์™€๋Š” ์˜๋ฏธ ์—†๋Š” ๋‹จ์–ด๋กœ ์น˜ํ™˜๋˜์–ด์•ผ ํ•œ๋‹ค.

 

 

Prepared Statement ๊ตฌ๋ฌธ์‚ฌ์šฉ

 Prepared Statement ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด, ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๊ฐ’์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—DBMS๊ฐ€ ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ ํ•˜์—ฌ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋Œ€๊ธฐํ•˜๋Š”๋ฐ ๊ทธ ํ›„ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ์ธ์‹ํ•˜๊ฒŒ ํ•˜์—ฌ ๊ณต๊ฒฉ์ฟผ๋ฆฌ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค๊ณ  ํ•˜๋”๋ผ๋„, ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์€ ์ด๋ฏธ ์˜๋ฏธ ์—†๋Š” ๋‹จ์ˆœ ๋ฌธ์ž์—ด ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ์ฟผ๋ฆฌ๋ฌธ๋„ ๊ณต๊ฒฉ์ž์˜ ์˜๋„๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

Error Message ๋…ธ์ถœ ๊ธˆ์ง€

๊ณต๊ฒฉ์ž๊ฐ€ SQL Injection์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •๋ณด(ํ…Œ์ด๋ธ”๋ช…, ์ปฌ๋Ÿผ๋ช… ๋“ฑ)๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ๋”ฐ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์ง€ ์•Š์•˜๋‹ค๋ฉด, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ฟผ๋ฆฌ๋ฌธ๊ณผ ํ•จ๊ป˜ ์—๋Ÿฌ์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๋ฐ˜ํ™˜ํ—ค ์ฃผ๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ํ…Œ์ด๋ธ”๋ช… ๋ฐ ์ปฌ๋Ÿผ๋ช… ๊ทธ๋ฆฌ๊ณ  ์ฟผ๋ฆฌ๋ฌธ์ด ๋…ธ์ถœ์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์˜ค๋ฅ˜๋ฐœ์ƒ ์‹œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๋ฅผ ์ œ์ž‘ ํ˜น์€ ๋ฉ”์‹œ์ง€๋ฐ•์Šค๋ฅผ ๋„์šฐ๋„๋ก ํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

 

์›น ๋ฐฉํ™”๋ฒฝ ์‚ฌ์šฉ

์›น ๊ณต๊ฒฉ ๋ฐฉ์–ด์— ํŠนํ™”๋˜์–ด์žˆ๋Š” ์›น ๋ฐฉํ™”๋ฒฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•. ์›น ๋ฐฉํ™”๋ฒฝ์€ ์†Œํ”„ํŠธ์›จ์–ด ํ˜•, ํ•˜๋“œ์›จ์–ด ํ˜•, ํ”„๋ก์‹œ ํ˜• ์ด๋ ‡๊ฒŒ ์„ธ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ํ˜•์€ ์„œ๋ฒ„ ๋‚ด์— ์ง์ ‘ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๊ณ , ํ•˜๋“œ์›จ์–ด ํ˜•์€ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์„œ๋ฒ„ ์•ž ๋‹จ์— ์ง์ ‘ ํ•˜๋“œ์›จ์–ด ์žฅ๋น„๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋ฉฐ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ”„๋ก์‹œ ํ˜•์€ DNS ์„œ๋ฒ„ ์ฃผ์†Œ๋ฅผ ์›น ๋ฐฉํ™”๋ฒฝ์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์„œ๋ฒ„๋กœ ๊ฐ€๋Š” ํŠธ๋ž˜ํ”ฝ์ด ์›น ๋ฐฉํ™”๋ฒฝ์„ ๋จผ์ € ๊ฑฐ์น˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

 

 

 

 

 


์ฐธ๊ณ 

link1 link2

+ Recent posts