์ด๋ฒ ํฌ์คํ
์ SQL์ธ์ ์
Login Form/Hero ๋ฐฉ๋ฒ ์
๋๋ค.
SQL์ธ์ ์
์ด ๊ณต๊ฒฉ ๊ฐ์๋๋ ๊ฑฐ์ ๋น์ทํ์ง๋ง ์ฌ๋ฌ ์ข
๋ฅ๊ฐ ์์ผ๋ ์ ์์งํ์ฌ ์ค์ตํ๋๋ก ํฉ์๋ค~
์ค์ตํ๋ ๋ชจ๋ ๊ณต๊ฒฉ์ ์ค์ ๋ก ์ฌ์ฉํ์๋ฉด ์๋ฉ๋๋ค.
ํ์ฉ๋ฐ์ง ์์ ์๋น์ค ๋์์ ํดํน์ ์๋ํ๋ ํ๋์ ๊ธ์งํ๋ฉฐ,
๋ชจ๋ ๋ฒ์ ์ฑ
์์ ์ฌ์ฉ์์๊ฒ ์๋ ๊ฒ์ ๋ช
์ฌํด์ฃผ์ธ์.
์ค๋ช
์ ์์, ์์ผ๋ก ํ๋ SQL ์ธ์ ์
์ ์ผ๋ถ ๊ณต๊ฒฉ๋ค์ ๋์๋ฐฉ์์ ๋ฐ๋ก ํฌ์คํ
ํ์ง ์์๊ฒ์.
๋๋ถ๋ถ ๊ฐ์ ์ค๋ช
์ด๊ธฐ ๋๋ฌธ์ ์๋ตํ๊ณ , ๋ค๋ฅธ ๊ฒฝ์ฐ ๊ธฐ์ฌํ๋๋ก ํ๊ฒ ์ต๋๋ค.
๋์ด๋ ํ
SQL Login Form/Hero ๋ฅผ ์ ํ!
sqli_3.php ํ์ด์ง๋ 'hero'๊ทธ๋ฃน์ ์ํ๋ ์ฌ์ฉ์๋ค์ด ๋ก๊ทธ์ธํ๋ฉด,
๋ก๊ทธ์ธํ ์ฌ์ฉ์์ ๋น๋ฐ๋ฒํธ ํํธ๋ฅผ ์ถ๋ ฅํ๋ ํ์ด์ง์ด๋ค.
๋จผ์ ์๋ฌด๊ฑฐ๋ ์
๋ ฅํด๋ดค๋๋, ์๋ชป๋ ์๊ฒฉ์ด๋ผ๊ณ ์ถ๋ ฅ์ด ๋์๋ค.
login ํผ์ '(์์๋ฐ์ดํ) ๋ฅผ ์
๋ ฅํ์ฌ SQL ์ธ์ ์
์ทจ์ฝ์ ์ด ์๋์ง๋ฅผ ํ์
ํด๋ณด์๋ค.
SQL ์ค๋ฅ ๋ฉ์ธ์ง๊ฐ ์ถ๋ ฅ๋์๋ค. ์ฆ SQL ์ธ์ ์
์ทจ์ฝ์ ์ด ์๋ค๋ ๊ฒ์ด๋ค.
๋ํ mysql์ด๋ผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ์ข
๋ฅ๊น์ง ์๊ฒ ๋์๋ค.
(password ํผ์ '์ ์
๋ ฅํด๋ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง๋ง, ๋๋ค '๋ฅผ ์ฐ์ผ๋ฉด ์๋ชป๋ ์๊ฒฉ์ด๋ผ๋ ์๋ฌ)
๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์ผ๋ก ๋ง๋ค์ด ์ฃผ๋ 'or 1=1# ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํ๋๋
SQL์ธ์ ์
์ด ๊ทธ๋ฅ ๋ฐ๋ก ์ฑ๊ณต๋๋ฒ๋ ธ๋ค. (๋งค์ฐ ์ทจ์ฝํ ํ์ด์ง ๊ฐ์ ๊ฒฝ์ฐ์)
'Neo'๋ผ๋ ์ฌ์ฉ์๋ก ๋ก๊ทธ์ธ์ด ์ฑ๊ณตํ์๊ณ ๋ค์๋ ํด๋น ์ฌ์ฉ์์ ๋น๋ฐ๋ฒํธ์ ํํธ๋ฅผ ์๋ ค์ฃผ๋ ๋ฏ ํ๋ค.
์ด ํ์ด์ง๋ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ์ง ์์๋ ๋ก๊ทธ์ธ์ด ๋์๋๋ฐ, ์ด๋ ๋ณ์๋ฅผ ๋ฐ๋ก ์
๋ ฅ๋ฐ์ง ์๊ณ AND์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ
ํ ์ค๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ด๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ์ทจ์ฝ์ ์ด๋ค.
sqli_3.php ํ์ด์ง ์์ค์ฝ๋๋ฅผ ํ์ธํด๋ณด๋ฉด
์์๋๋ก ์ฟผ๋ฆฌ ํ ์ค๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ด๋, ๋น๋ฐ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ค.
'login'๋ณ์์ ์ฟผ๋ฆฌ๋ฅผ ์ฃผ์
ํ๋ฉด
์ด๋ฐ์์ผ๋ก ๋๋๋ฐ,
์ฟผ๋ฆฌ๋ฅผ ์คํํ ๋ AND ์ฐ์ฐ์๊ฐ OR ์ฐ์ฐ์๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์์ AND๋ฅผ ๋จผ์ ์ํํ๊ฒ ๋๋ค.
์ฆ ๋ค์ password๋จผ์ ์ํ > ๋ง์ง๋ง์ผ๋ก ์ํ๋๋๊ฒ or ๋ด๊ฐ ์ด ์ฟผ๋ฆฌ์ด๋ฏ๋ก ๋ด ์ฟผ๋ฆฌ๊ฐ ๋จนํ
๋ง์ผ 'or 1=1#์ด๋ผ๋ ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅํ๋ค๋ฉด,
OR์ฐ์ฐ์ ํญ์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด ๋์ด ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ์ง ์์๋ 'heroes'ํ
์ด๋ธ์ ์ ์ฅ๋ ์ฌ์ฉ์๋ก ๋ก๊ทธ์ธ์ด ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ neo ์ด์ธ์ ์ฌ์ฉ์๋ก๋ ๋ก๊ทธ์ธ์ด ๊ฐ๋ฅํด์ผํ๋๋ฐ, (๋งํ ์ํ o)
๊ทธ๋ฌ๋ ค๋ฉด ์์ด๋๋ฅผ ์์์ผ ํ๋ค.
putty๋ก table์ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ ๋ค๋ฅธ ์ด๋ฆ์ 'alice','thor', ... ๋ฑ ์๋๋ฐ,
์ด ํ
์ด๋ธ์ ๋ณผ ์ ์๋ค ๊ฐ์ ํ๊ณ SQL์ธ์ ์
์ ํตํด ์์๋ณธ๋ค.
์ฒ์ ์ปฌ๋ผ ์๋ฅผ ๋ง์ถฐ์ผ union base SQL ์ธ์ ์
์ด ๊ฐ๋ฅํ๋ฏ๋ก, ๋ง์ถฐ๋ณด์๋ค. 1,2,3,4 ์ญ์ญ ํด๋๊ฐ๋ฉด ๋จ.
์ปฌ๋ผ ์๊ฐ 4๊ฐ์ผ ๋ ์ถ๋ ฅ์ด ๋๊ณ , ํ์ธํด๋ณด๋ 2,4๋ฒ ์ปฌ๋ผ์ด ํ๋ฉด์์ ๋ณด์ด๋๋ก ์ถ๋ ฅ๋๋ ์ปฌ๋ผ์ด๋ค.
์ด ์ปฌ๋ผ์ ์ด์ฉํ์ฌ SQL์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ ์
๋ ฅํด๋ณธ๋ค.
์ ๋ฉ๋ชจ์ฅ์ ์
๋ ฅํ ๊ฒ์ฒ๋ผ ์ฌ๋ฌ ๋ฐฉ์์ ํตํด ์ฌ์ฉ์๋ค์ ์์ด๋๋ฅผ ์ ์ ์๊ณ ,
id = 3, login = thor, password = Asgard ๋ฑ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ์ ์ ์์๋ค.
SQL์ธ์ ์
์ฑ๊ณต
๊ตณ์ด password๋ฅผ ์
๋ ฅํ์ง ์์๋
์ด์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฌธ์ ์ด์ฉํด์ alice๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ ์ ์๋ค.
SQL์ธ์ ์
์ ๋์๋ฐฉ๋ฒ์ ์์ ๊ธฐ์ฌํ๋ฏ์ด, ์ ์ ์ฌ๋ ธ๋ ๋ฐฉ๋ฒ๋ค๊ณผ ์ ์ฌํ๊ธฐ ๋๋ฌธ์ ์๋ตํ๋๋ก ํ๊ฒ ์ต๋๋ค.
--> php ๊ธฐ๋ณธ์ ๊ณตํจ์ "mysql_real_escape_string()" ์ฌ์ฉ