waffle
μ™€ν”Œκ³΅μž₯
waffle
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (72)
    • πŸ“’ Daily Log (2)
    • πŸ”¨ Dev_BE (5)
      • κ°œλ…μ •λ¦¬ (4)
      • 기둝 (1)
    • πŸ”¨ Dev_FE (4)
    • πŸ”¨ Dev_DB (1)
    • βš™ Dev_Ops (0)
    • πŸ”‘ Lang (2)
      • Python (2)
    • πŸ’‘ ν”„λ‘œμ νŠΈ (9)
      • Base (1)
      • μ•„λŒ€λ°€λ§΅ (8)
    • πŸƒπŸ» μ™ΈλΆ€ν™œλ™ (2)
      • [ν”„λ¦¬μ½”μŠ€] μš°μ•„ν•œν…Œν¬μ½”μŠ€ 7κΈ° - BE (2)
    • πŸ“• [STUDY] 개발 (13)
      • [STUDY] μ•Œκ³ λ¦¬μ¦˜ (9)
      • 동계 μŠ€ν„°λ”” [Do-iT: μ›ΉνŒ©] (2021) (4)
    • πŸ“™ [STUDY] AI (2)
      • Tensorflow (2)
    • πŸ” λ³΄μ•ˆ,μ •λ³΄λ³΄ν˜Έ (32)
      • CTF (2)
      • πŸ“˜ [STUDY] ν¬λ Œμ‹ (15)
      • πŸ“˜ [STUDY] 취약점 (4)
      • πŸ“˜ [STYDY] 리버싱 (11)
    • πŸ“” IT 법λ₯  (0)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ

곡지사항

인기 κΈ€

νƒœκ·Έ

  • scrum
  • μˆ˜ν•™_1(μ—°μŠ΅)
  • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€
  • λ°±μ€€
  • μ•Œκ³ λ¦¬μ¦˜
  • reversing
  • sql
  • μ—°μŠ΅_자료ꡬ쑰
  • μš°μ•„ν•œν…Œν¬μ½”μŠ€
  • μˆ˜ν•™_1
  • dopwn
  • js
  • ν”„λ¦¬μ½”μŠ€
  • JAVA_API
  • λ¬Έμžμ—΄
  • write-up
  • μš°ν…Œμ½”_7κΈ°
  • 개발
  • μš°ν…Œμ½”
  • μ•„μ£ΌλŒ€_μ•Œκ³ λ¦¬μ¦˜_ꡐ윑
  • til
  • 자료ꡬ쑰
  • κ°œλ°œλ°±μ„œ
  • Weekly
  • gdb
  • μ½”λ”©ν…ŒμŠ€νŠΈ_고득점
  • API
  • javascript
  • Java
  • λ°μΌλ¦¬μ•Œκ³ 

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
waffle

μ™€ν”Œκ³΅μž₯

[ SQL Injection ] Gremlin
πŸ” λ³΄μ•ˆ,μ •λ³΄λ³΄ν˜Έ/πŸ“˜ [STUDY] 취약점

[ SQL Injection ] Gremlin

2021. 9. 13. 17:43
728x90

sql query & php code

query값을 톡해 λ°›μ•„μ˜€λŠ” 데이터λ₯Ό ν™œμš©ν•˜μ—¬ sql query둜 λ§Œλ“€μ–΄ db에 λͺ…령을 λ‚΄λ¦¬λŠ” php μ½”λ“œμ΄λ‹€.

 

PHP 뢄석


 

μ€‘μš”ν•˜κ²Œ 확인해야 ν•  뢀뢄은 ν•„ν„°λ§λ˜λŠ” 뢀뢄인데,

5,6번째 쀄을 ν™•μΈν•˜λ©΄ 'preg_match'λΌλŠ” ν•¨μˆ˜κ°€ ν™œμš©λ˜μ–΄μžˆλŠ” 것을 λ³Ό 수 μžˆλ‹€.

 

preg_match function description, PHP Official

preg_match ν•¨μˆ˜λŠ” μ •κ·œμ‹ ν‘œν˜„, 검색 λŒ€μƒ λ¬Έμžμ—΄, μΌμΉ˜λ°°μ—΄ λ°˜ν™˜λ³€μˆ˜(선택) 등을 μž…λ ₯ν•˜λ©΄ μž…λ ₯된 μ •κ·œμ‹μ— μΌμΉ˜ν•˜λŠ” ν•¨μˆ˜λ₯Ό μ°Ύμ•„λ‚΄λŠ” λ‚΄μž₯ν•¨μˆ˜λ‹€. 

 

μ •κ·œμ‹ 뢄석


 

 

λ‹€μ‹œ λŒμ•„μ™€ μ½”λ“œμ— μ‚¬μš©λœ preg_match ν•¨μˆ˜μ˜ μ •κ·œμ‹μ€ λ‹€μŒκ³Ό κ°™λ‹€:

/prob|_|\.|\(\)/i

2개의 '/' 사이에 ν™•μΈν•˜κ³ μž ν•˜λŠ” 값듀을 '|'둜 κ΅¬λΆ„ν•˜μ—¬ μž‘μ„±ν•˜λ©΄ ν•΄λ‹Ή 값이 ν•„ν„°λ§λœλ‹€. λ§ˆμ§€λ§‰ '/' 뒀에 i의 경우 λ¬΄μ‹œν•œλ‹€λŠ” μ˜΅μ…˜μ„ μ€€ 것이닀. λ”°λΌμ„œ 해석을 ν•˜μžλ©΄ μ•„λž˜μ™€ κ°™κ²Œ μ •λ¦¬λœλ‹€:

 

"'prob'. '_', '.', '()'λ¬Έμžμ—΄λ“€μ„ λ¬΄μ‹œν•œλ‹€"

 

λ”°λΌμ„œ μœ„μ˜ 값듀을 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 쿼리문을 idλ‚˜ pw ν•„λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ μ „μ†‘ν•˜λ©΄ SQL Injection 취약점이 발견될 수 μžˆμ„ 것이닀.

 

Injection


λ”°λΌμ„œ 처음 μ‹œλ„ν•œ Injection CodeλŠ” λ‹€μŒκ³Ό κ°™λ‹€:

 

' OR LENGTH(id)!=0 #

'을 μ‚¬μš©ν•΄μ„œ μ•žμ„  쿼리문 λ¬Έμžμ—΄μ—μ„œ μ—΄λ €μžˆλŠ” λ¬Έμžμ—΄κΈ°ν˜Έ(?)λ₯Ό λ‹«μ•„μ£Όκ³  OR μ˜΅μ…˜μ„ μ‚¬μš©ν•΄ ORκΈ°μ€€ μ•žμ΄λ‚˜ λ’· λ‚΄μš© λ‘˜μ€‘ ν•˜λ‚˜λ§Œ μΌμΉ˜ν•΄λ„ 쿼리문이 λͺ¨λ“  값을 뱉어낼 수 μžˆλ„λ‘ λ§Œλ“€μ—ˆλ‹€.

OR λ’€μ—λŠ” idκ°€ λΉ„μ–΄μžˆμ§€ μ•Šμ€ 이상 무쑰건 true일 수 μžˆλ„λ‘ λ¬Έμžμ—΄μ˜ 길이가 0이 μ•„λ‹Œ λͺ¨λ“  값을 μ„ νƒν•˜λ„λ‘ ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ˜€λ‹€.

이후 λ’·λ‚΄μš©μ€ #을 μ‚¬μš©ν•΄ μ£Όμ„μ²˜λ¦¬ν•˜μ—¬ λ¬΄μ‹œν•˜λ„λ‘ λ§Œλ“€μ—ˆλ‹€. λ”°λΌμ„œ pw의 λ‚΄μš©μ€ μ–΄λ–€ 값이 듀어가더라도 λ¬΄μ‹œλœλ‹€.

 

이후 ν™•μΈν•œ λͺ¨λ²” Injection CodeλŠ” λ‹€μŒκ³Ό κ°™λ‹€:

 

' OR 1=1 #

λΉ„μ–΄μžˆλ‹€κ³  ν•˜λ”λΌλ„ λͺ¨λ“  값을 ν‘œμ‹œν•  수 μžˆλ„λ‘ ν•˜κΈ° μœ„ν•΄ 1=1을 μž…λ ₯ν•˜μ—¬ 항상 trueκ°€ λ‚˜μ˜€λ„λ‘ μ„€μ •λ˜μ–΄μžˆλ‹€. 

 

두 방법 λͺ¨λ‘ url query parameterλ₯Ό 톡해 μš”μ²­ν•˜λ©΄ λ‹€μŒκ³Ό 같은 응닡을 뱉어낸닀:

 

 

How to Defence


 

생각해본 방법듀은 λ‹€μŒκ³Ό κ°™λ‹€:

 

1. %μ΄λ‚˜ #κ°’μœΌλ‘œ 값이 λ“€μ–΄μ˜€λ©΄ μš”μ²­ 자체λ₯Ό μ·¨μ†Œ

SQL Injection은 λŒ€λΆ€λΆ„ query λ³€μ‘°λ₯Ό 톡해 λ“€μ–΄μ˜€κΈ° λ•Œλ¬Έμ—, query에 특수문자λ₯Ό μž…λ ₯ν•˜κΈ°μœ„ν•΄ λ°˜λ“œμ‹œ ν•„μš”ν•œ %문자λ₯Ό μ• μ΄ˆμ— λ§‰λŠ”λ‹€. λ˜ν•œ 쿼리문 주석을 μœ λ„ν•˜λŠ” #문자 λ˜ν•œ κΈˆμ§€μ‹œμΌœ μ˜λ„ν•œ μ½”λ“œμ˜ 싀행쀑단을 λ°©μ§€ν•œλ‹€. λ‹€λ§Œ 이 방법을 μœ„ν•΄μ„œλŠ” λΉ„λ°€λ²ˆν˜Έλ‚˜ 아이디에 %λ¬Έμžμ™€ #문자 μž…λ ₯을 κΈˆμ§€μ‹œμΌœμ•Ό ν•œλ‹€.

 

2. λͺ¨λ“  특수문자 μ•žμ— μ—­μŠ¬λ ˆμ‹œ ('\') 뢙이기

μ—­μŠ¬λ ˆμ‹œλ₯Ό 특수문자 μ•žμ— λΆ™μ΄κ²Œ 되면 ν•΄λ‹Ή 값이 κ°€μ§€λŠ” νŠΉλ³„ν•œ μ˜λ―Έκ°€ μ•„λ‹Œ 문자 자체의 의미둜 컴퓨터가 ν•΄μ„ν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€. λ”°λΌμ„œ λͺ¨λ“  특수문자 μ•žμ— μ—­μŠ¬λ ˆμ‹œλ₯Ό 뢙이면 μœ„λ³€μ‘°λ₯Ό 막을 수 μžˆμ„ 것이라 μƒκ°ν•œλ‹€.

 

728x90
λ°˜μ‘ν˜•

'πŸ” λ³΄μ•ˆ,μ •λ³΄λ³΄ν˜Έ > πŸ“˜ [STUDY] 취약점' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ SQL Injection ] webhacking.kr - 21  (0) 2021.09.20
[ SQL Injection ] Goblin  (0) 2021.09.13
[ SQL Injection ] Cobolt  (0) 2021.09.13
    'πŸ” λ³΄μ•ˆ,μ •λ³΄λ³΄ν˜Έ/πŸ“˜ [STUDY] 취약점' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [ SQL Injection ] webhacking.kr - 21
    • [ SQL Injection ] Goblin
    • [ SQL Injection ] Cobolt
    waffle
    waffle
    개발기술 κ΄€λ ¨ 글듀은 velog에 μžˆμŠ΅λ‹ˆλ‹€ :) (https://velog.io/@cm_waffle) Developer waffle = new Waffle();

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”