μ΄λ² ν¬μ€ν
μ 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()" μ¬μ©