μƒˆμ†Œμ‹

Game/Bee-box

[Bee-box] SQL μΈμ μ…˜ - Stored(Blog)

  • -
λ°˜μ‘ν˜•

 μ΄λ²ˆ ν¬μŠ€νŒ…μ€ SQLμΈμ μ…˜  Stored(Blog) 방법 μž…λ‹ˆλ‹€.

SQLμΈμ μ…˜μ΄ 곡격 κ°œμš”λ„λŠ” 거의 λΉ„μŠ·ν•˜μ§€λ§Œ μ—¬λŸ¬ μ’…λ₯˜κ°€ μžˆμœΌλ‹ˆ 잘 μˆ™μ§€ν•˜μ—¬ μ‹€μŠ΅ν•˜λ„λ‘ ν•©μ‹œλ‹€~

 

μ‹€μŠ΅ν•˜λŠ” λͺ¨λ“  곡격은 μ‹€μ œλ‘œ μ‚¬μš©ν•˜μ‹œλ©΄ μ•ˆλ©λ‹ˆλ‹€.

ν—ˆμš©λ°›μ§€ μ•Šμ€ μ„œλΉ„μŠ€ λŒ€μƒμ— 해킹을 μ‹œλ„ν•˜λŠ” 행동은 κΈˆμ§€ν•˜λ©°,

λͺ¨λ“  법적 μ±…μž„μ€ μ‚¬μš©μžμ—κ²Œ μžˆλŠ” 것을 λͺ…μ‹¬ν•΄μ£Όμ„Έμš”.

 

μ„€λͺ…에 μ•žμ„œ, μ•žμœΌλ‘œ ν•˜λŠ” SQL μΈμ μ…˜μ˜ 일뢀 곡격듀은 λŒ€μ‘λ°©μ•ˆμ„ λ”°λ‘œ ν¬μŠ€νŒ… ν•˜μ§€ μ•Šμ„κ²Œμš”. 

λŒ€λΆ€λΆ„ 같은 μ„€λͺ…이기 λ•Œλ¬Έμ— μƒλž΅ν•˜κ³ , λ‹€λ₯Έ 경우 κΈ°μž¬ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

 


 

λ‚œμ΄λ„ ν•˜

 

 

 

 

μ €μž₯ν˜• SqlμΈμ μ…˜ > 선택해쀀닀.

 

 

 

 

sqli_7.php νŽ˜μ΄μ§€λŠ” μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λ‚΄μš©μ„ μ €μž₯ν•˜μ—¬ ν…Œμ΄λΈ” ν˜•νƒœλ‘œ 좜λ ₯ν•˜λŠ” νŽ˜μ΄μ§€μ΄λ‹€.

 

λ¨Όμ € sql injection 이 ν†΅ν•˜λŠ”μ§€ μ•Œμ•„λ³΄λ €λ©΄,  '(μž‘μ€λ”°μ˜΄ν‘œ) λ₯Ό 찍어본닀.

 

 

 

 

 

 

SQL였λ₯˜ 메세지가 좜λ ₯λ˜μ—ˆλ‹€. > 취약함

 

이 였λ₯˜ λ©”μ„Έμ§€λ‘œ mysql dbλ₯Ό μ‚¬μš©ν•˜λŠ” 것을 μ•Œ 수 μžˆμ—ˆλŠ”λ°, 

 

'bee')' λΌλŠ” 메세지도 ν•¨κ»˜ 좜λ ₯λ˜μ—ˆλ‹€.(λ‚΄κ°€ μž…λ ₯ν•œ κ±° μ•„λ‹˜)

 

μ•„κΉŒ νŽ˜μ΄μ§€μ— owner κ°€ beeμ˜€λ˜ κ²ƒμœΌλ‘œ 보아, λΈ”λ‘œκ·Έμ— 글을 μž…λ ₯ν•˜λ©΄, μ‚¬μš©μžμ˜ 아이디λ₯Ό κ°€μž₯ λ§ˆμ§€λ§‰μ— μ €μž₯ν•˜λŠ” 점을 νŒŒμ•… ν•  수 μžˆλ‹€.

 

 

 

 

 

 

μ΄νŽ˜μ΄μ§€λŠ” POST λ°©μ‹μ΄κΈ°λ•Œλ¬Έμ—, 무슨 λ³€μˆ˜μ— 값이 λ“€μ–΄κ°€λŠ”μ§€ νŒŒμ•…μ΄ λΆˆκ°€λŠ₯ν•˜λ‹€.

 

ν”„λ‘μ‹œ 도ꡬ인 λ²„ν”„μŠˆνŠΈ(μŠ€μœ„νŠΈ)둜 ν™•μΈν•΄λ³΄μž!

 

 

 

 

값을 λ„˜κ²¨λ΄€λ”λ‹ˆ, λ³€μˆ˜ 'entry'와 'blog'λ₯Ό μ‚¬μš©ν•˜κ³  있고,

ν…μŠ€νŠΈ μƒμž μ•ˆμ— λ“€μ–΄κ°€λŠ” 값은 entry λ³€μˆ˜μ— λ“€μ–΄κ°€λŠ” 것을 확인 ν•  수 μžˆλ‹€.

 

 

 

λ³€μˆ˜μ— '1 을 μž…λ ₯ν•΄ λ³΄μ•˜λ‹€

 

 

 

 

 

였λ₯˜λ₯Ό μ‚΄νŽ΄λ³΄λ‹ˆ λ¬Έλ²•μ˜€λ₯˜κ°€ λ°œμƒν•˜κ³ ,  '1','bee')' λΌλŠ” 문ꡬ가 λ°œμƒν•œλ‹€. 

즉 μž‘μ€ λ”°μ˜΄ν‘œμ˜ 짝이 λ§žμ§€ μ•Šμ•„μ„œ μƒκΈ°λŠ” 였λ₯˜μ΄λ‹€.

 

 

μžμ„Ένžˆ μ‚΄νŽ΄ 보면, ν™”λ©΄μƒμœΌλ‘œ λ‚΄κ°€ μ†λŒˆ 수 μžˆλŠ” 뢀뢄은 entry와 owner둜 보이고, #을 κΈ€λ²ˆν˜Έ, dateλŠ” ν˜„μž¬ μ‹œκ°„μ„ μ•Œλ € μ£ΌλŠ” 것 κ°™λ‹€.

 

 

λ‚΄κ°€ ν…μŠ€νŠΈ 창에 μ“°λŠ” 뢀뢄은 entry의 λ‚΄μš©μœΌλ‘œ λ“€μ–΄κ°€κΈ° λ•Œλ¬Έμ—, λ‚΄κ°€ κ±΄λ“œλ €μ„œ 화면에 값을 λ…ΈμΆœ μ‹œν‚€λ €λ©΄

뒀에 ownerλ₯Ό κ±΄λ“œλ¦΄ 수 밖에 μ—†λ‹€.

 

 

 

 

 

 

 

μ΄λŸ°μ‹μ˜ 쿼리문을 μ“°κ²Œ 되면, ν…μŠ€νŠΈ λ‚΄μš©μ•ˆμ—λŠ” 1234567 이 λ“€μ–΄κ°€κ³  μ•žμ— owner μ—λŠ” λ‚΄κ°€

μ›ν•˜λŠ” 값이 좜λ ₯ λœλ‹€.

 

 

 

 

 

 

 

버프 슈트λ₯Ό μ‚¬μš©ν•΄μ„œ λ³€μˆ˜κ°’μ— 직접 값을 μž…λ ₯해도 λœλ‹€.

 

 

 

 

 

 

μ΄λ ‡κ²Œ ν•˜λ©΄ κ²°κ³ΌλŠ”

 

 

 

 

 

그외에도 방법은 λ‹€μ–‘ν•˜λ‹€.

 

 

 

 

 

 

λ‹€μ–‘ν•œ λ°©λ²•μœΌλ‘œ 값을 μ•Œμ•„λ‚Ό 수 μžˆλ‹€. λ‚΄κ°€ λͺ¨λ“  ν…Œμ΄λΈ” λͺ…κ³Ό 컬럼 이름, DB이름을 λͺ¨λ₯Έλ‹€ κ°€μ •ν–ˆμ„ λ•ŒλŠ”

information_schema λ₯Ό μ΄μš©ν•΄μ„œ 값을 μ•Œμ•„λ‚΄λ©΄ λœλ‹€. limit둜 λͺ‡λ²ˆμ§Έ μ€„μ˜ λ‚΄μš©μ„ κ°€μ Έμ˜¬ 것인지 지정할 수 μžˆλŠ”λ°

 

limit와 substring μ΄λΌλŠ” ν•¨μˆ˜μ— λŒ€ν•΄μ„œλŠ” blind sql injection을 μ„€λͺ…ν•  λ•Œ ν•¨κ»˜ μ„€λͺ…ν•˜λ„λ‘ ν•˜κ² λ‹€.

 

 

 

 

 

 

 

μ΄λ ‡κ²Œ μœ„μ²˜λŸΌ 좜λ ₯ κ°€λŠ₯

 

 

putty둜 μ ‘μ†ν•΄μ„œ bWAPP에 users ν…Œμ΄λΈ”μ„ μ‹€μ œλ‘œ 확인해보면, 값이 μ œλŒ€λ‘œ 좜λ ₯λœλ‹€λŠ” 것을 μ•Œ 수 μžˆλ‹€.

 

 

 

 

 

 

ν•˜μ—¬νŠΌ μ΄λ ‡κ²Œ SQLμΈμ μ…˜ 성곡!

 

 

λŒ€μ‘λ°©μ•ˆμ€ phpκΈ°λ³Έν•¨μˆ˜ escape_stringν•¨μˆ˜ (μ „κ³Ό 같은 λ°©μ‹μž„)λ₯Ό μ“°λŠ” λ°©λ²•μœΌλ‘œ

μ •ν™•ν•œ μ„€λͺ…은 μƒλž΅ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

 

 


 

 

 

μ‹€μŠ΅μ΄ λλ‚˜κ³  κ·Έλƒ₯,,,ν˜ΈκΈ°μ‹¬μ— alert창을 λ„μ›Œλ΄€λŠ”λ°,,,

 

<script>alert("hello");</script> ..........

 

μ•„λž˜μ²˜λŸΌ 계속 DB에 μ €μž₯λ˜μ„œ 자꾸 싀행이 λ˜μ—ˆλ‹€..

 

 

 

 

 

γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹.....

κ²°κ΅­ DB에 λ“€μ–΄κ°€μ„œ κΈ€ μ§€μš°κ³ ,,ν•˜λ‹€κ°€ λ‹€ λ‚ λ € 버렸닀..^.^.......

 

 

 

 

 

κ΅ν›ˆ -> 슀크립트 μ°½ λ„μš°λŠ”κ±΄ xss, csrf μ‹€μŠ΅ν•  λ•Œ ν•΄λ³΄μž. 괜히 κΉŒλΆˆμ§€ 말고....

λ°˜μ‘ν˜•
Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.