Notice
Recent Posts
Link
Today
Total
10-06 00:17
๊ด€๋ฆฌ ๋ฉ”๋‰ด

dingdong coding

SQL Injection ๋ณธ๋ฌธ

๐ŸฌDB

SQL Injection

๐Ÿถ ๊ฐœ๋ฐœ๊ฐœ๋ฐœ ๐Ÿพ 2022. 6. 17. 00:14

SQL Injection ์ด๋ž€? 

 ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด์•ˆ์ƒ์˜ ์ทจ์•ฝ์ ์„ ์ด์šฉํ•˜์—ฌ ์กฐ์ž‘๋œ SQL query๋ฌธ์„  DataBase์— ์ฃผ์ž…์‹œ์ผœ ๋น„์ •์ƒ์  ๋ช…๋ น์„ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ• (  web hacking techniques )

ํ•ด๋‹น ๊ณต๊ฒฉ์„ ๋ฐ›์œผ๋ฉด ์กฐ์ง ๋‚ด๋ถ€์˜ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋‚˜ ๊ฐœ์ธ์ •๋ณด๋ฅผ ํš๋“ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ฌ๊ฐํ•œ ๊ฒฝ์šฐ ์กฐ์ง ๋ฐ์ดํ„ฐ ์ „์ฒด๋ฅผ ์žฅ์•…ํ•˜๊ฑฐ๋‚˜ ์†์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฒฉ ๋ฐฉ๋ฒ• 

1 ) ์ธ์ฆ์šฐํšŒ 

    •  SQL injection์€ ๋ณดํ†ต  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋กœ๊ทธ์ธ(username, userid)๊ณผ ๊ฐ™์€ ์ž…๋ ฅ ์š”์ฒญ ์‹œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. 

    •  ์ •์ƒ์ ์ธ ๊ณ„์ •์ •๋ณด ์—†์ด๋„ ๋กœ๊ทธ์ธ์„ ์šฐํšŒํ•˜์—ฌ ์ธ์ฆ์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ์•„์ด๋””๊ฐ€ abc, ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ 1234์ผ ๋•Œ ์ฟผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ „์†ก๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

SELECT * FROM USER WHERE ID = "abc" AND PASSWORD = "1234";

SQL Injection์œผ๋กœ ๊ณต๊ฒฉํ•  ๋•Œ, input ์ฐฝ์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•จ๊ณผ ๋™์‹œ์— ๋‹ค๋ฅธ ์ฟผ๋ฆฌ๋ฌธ์„ ํ•จ๊ป˜ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. 

1234; DELETE * USER FROM ID = "1";

๋ณด์•ˆ์ด ์™„๋ฒฝํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์ด์ฒ˜๋Ÿผ pw๊ฐ€ id์™€ ์ผ์น˜ํ•ด True๊ฐ€ ๋˜์–ด ๋’ค์— ์ž‘์„ฑํ•œ DELETE๋ฌธ๋„ DB์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

 

์ด ์™ธ์—๋„ ๊ธฐ๋ณธ์ฟผ๋ฆฌ๋ฌธ์˜ WHERE์ ˆ์— OR๋ฌธ์„ ์ถ”๊ฐ€ํ•˜์—ฌ '1' = '1'๊ณผ ๊ฐ™์€ true๋ฌธ์„ ์ž‘์„ฑํ•˜์—ฌ ๋ฌด์กฐ๊ฑด ์ ์šฉ๋˜๋„๋ก ์ˆ˜์ •ํ•œ ๋’ค DB๋ฅผ ๋งˆ์Œ๋Œ€๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

 

2 ) ๋ฐ์ดํ„ฐ ๋…ธ์ถœ

    •  ์‹œ์Šคํ…œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ด์šฉํ•ด ๊ณต๊ฒฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

    •  ๋ณดํ†ต ์—๋Ÿฌ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๋Š” ์กด์žฌ์ด์ง€๋งŒ ํ•ด์ปค๋“ค์€ ์ด๋ฅผ ์—ญ์ด์šฉํ•ด ์•…์˜์  ๊ตฌ๋ฌธ์„ ์‚ฝ์ž…ํ•˜์—ฌ           ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. 

 

์˜ˆ๋ฅผ ๋“ค์–ด, ํ•ด์ปค๋Š” GET ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” URL ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ด์— ํ•ด๋‹นํ•˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ํ•ด๋‹น ์›น์•ฑ์˜ DB๊ตฌ์กฐ๋ฅผ ์œ ์ถ”ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ํ•ดํ‚น์— ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

url์„ ํ†ตํ•ด ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” GET ๋ฐฉ์‹์€ ํ•ด์ปค๊ฐ€ ๋‹จ์ˆœํžˆ url์„ ํ†ตํ•ด ์ „๋‹ฌ๋  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ๋งŒ ํ•œ๋‹ค๋ฉด ์†์‰ฝ๊ฒŒ SQL injection ์ทจ์•ฝ์ ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

  • URL ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง : ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ค‘์˜ ํ•˜๋‚˜๋กœ, url ์ฃผ์†Œ์— ๋ฏธ๋ฆฌ ํ˜‘์˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ†ตํ•ด ๋„˜๊ธฐ๋Š” ๊ฒƒ
 http://test.com/login.php?id=abc1234 and password=''

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

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

    •  ์„œ๋ฒ„ ๋‹จ์—์„œ ํ™”์ดํŠธ ๋ฆฌ์ŠคํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒ€์ฆํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. 

    •  ๋กœ๊ทธ์ธ ์ „, ๊ฒ€์ฆ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฏธ๋ฆฌ ์„ค์ •ํ•œ ํŠน์ˆ˜๋ฌธ์ž๋“ค์ด ๋“ค์–ด์™”์„ ๋•Œ ์š”์ฒญ์„ ๋ง‰์•„๋ƒ…๋‹ˆ๋‹ค.

 

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

    •  ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๊ฐ’์ด ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— DBMS๊ฐ€ ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผํ•˜์—ฌ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋Œ€๊ธฐ

    •  ๊ทธ ํ›„ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ์ธ์‹ํ•˜๊ฒŒ ํ•˜์—ฌ ๊ณต๊ฒฉ์ฟผ๋ฆฌ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹คํ•ด๋„ ๋‹จ์ˆœ ๋ฌธ์ž์—ด์ด ๋˜์–ด ๊ณต๊ฒฉ ๋ฐฉ์–ด

    •  statement์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ฟผ๋ฆฌ๋ฌธ์—์„œ ์ „๋‹ฌ์ธ์ž ๊ฐ’์„ ?๋กœ ๋ฐ›๋Š” ๊ฒƒ

 

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

    •  ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์—๋Ÿฌ ๋ฐฉ์ƒ ์‹œ ๋”ฐ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์ง€ ์•Š์•˜๋‹ค๋ฉด, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ฟผ๋ฆฌ๋ฌธ๊ณผ ํ•จ๊ป˜ ์—๋Ÿฌ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋ฐ˜ํ™˜ํ•ด

        ์ค๋‹ˆ๋‹ค.

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

 

 

ํ•™์Šต์— ๋งŽ์€ ๋„์›€์ด ๋œ ๋ธ”๋กœ๊ทธ ๋งํฌ๋ฅผ  ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚

 

์ฐธ์กฐ ๋ฐ ์ถœ์ฒ˜

[Database] SQL Injection - ๊ฐœ๋…, ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•, ๋ฐฉ์–ด ๋ฐฉ๋ฒ•

SQL Injection

SQL Injection ์ด๋ž€? (SQL ์‚ฝ์ž… ๊ณต๊ฒฉ)

'๐ŸฌDB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ MySQL ] ๊ธฐ๋ณธ ์ฟผ๋ฆฌ๋ฌธ ์ •๋ฆฌ  (2) 2022.07.07
Comments