μƒˆμ†Œμ‹

Game/Bee-box

[Bee-box] SQL μΈμ μ…˜ - AJAX/JSON/jQuery

  • -
λ°˜μ‘ν˜•

이번 ν¬μŠ€νŒ…μ€ SQLμΈμ μ…˜  AJAX/JSON/JQuery μž…λ‹ˆλ‹€.

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

 

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

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

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

 


 

 

 

μ‹€μŠ΅ μ „ κ°„λ‹¨νžˆ AJAX, JSON, jQuery 에 λŒ€ν•΄ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

AJAX(Asynchronous javaScript and XML)λŠ” HTML, μžλ°”μŠ€ν¬λ¦½νŠΈ, JSON을 ν˜Όν•©ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” κΈ°μˆ μ„ λ§ν•œλ‹€.

 

JSON(JavaScript Object Notation)은 μ›Ή μ„œλ²„μ™€ 데이터λ₯Ό μ£Όκ³  받을 λ•Œ 데이터λ₯Ό ν‘œν˜„ν•˜λŠ” 방법을 λœ»ν•˜λŠ”λ°, 

μžλ°”μŠ€ν¬λ¦½νŠΈ ν˜•μ‹μœΌλ‘œ 객체λ₯Ό ν‘œν˜„ν•œλ‹€.

 

JQueryλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 라이브러리 쀑 ν•˜λ‚˜λ‘œ, ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ 슀크립트 μ–Έμ–΄λ₯Ό μ‚¬μš©ν•  λ•Œ 이λ₯Ό λ‹¨μˆœν™”ν•˜κ³ 

AJAX κΈ°λŠ₯도 μ œκ³΅ ν•œλ‹€. 

 

 

 

<μ•„λž˜ μ£Όμ†ŒλŠ” AJAX,JSON,jQuery 순으둜 μžμ„Έν•œ μ„€λͺ…이 λ˜μ–΄μžˆλŠ” λΈ”λ‘œκ·Έ μ£Όμ†Œλ₯Ό 기재 해놓은 κ²ƒμž…λ‹ˆλ‹€.>

 

https://coding-factory.tistory.com/143

https://developer.mozilla.org/ko/docs/Learn/JavaScript/Objects/JSON

https://ko.wikipedia.org/wiki/JQuery

 

'sqli_10-1.php' νŽ˜μ΄μ§€λŠ” AJAX κΈ°μˆ μ„ ν™œμš©ν•˜μ—¬ 검색 λ²„νŠΌμ„ λˆ„λ₯΄μ§€ μ•Šμ•„λ„ 검색어λ₯Ό μž…λ ₯ν•˜λ©΄

λ°”λ‘œ 검색 κ²°κ³Όλ₯Ό 좜λ ₯ν•œλ‹€.

 

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

 

 

 

μ‹€μŠ΅μ„ μœ„ν•΄ "SQL Injection(AJAX/JSON/jQuery)" λ₯Ό ν΄λ¦­ν•˜κ³ , lowλ ˆλ²¨μ„ μ„ νƒν•œλ‹€.

 

 

 

 

항상 κ²°κ³Όλ₯Ό 참으둜 λ§Œλ“œλŠ” SQL쿼리λ₯Ό κ²€μƒ‰λž€μ— μž…λ ₯ν•΄λ³Έλ‹€. 

 

κ²€μƒ‰λ²„νŠΌμ„ λˆ„λ₯΄μ§€ μ•Šκ³  μž…λ ₯만 ν•˜μ—¬λ„ 결과창이 좜λ ₯λ˜λŠ” 것을 μ•Œ 수 μžˆλ‹€.

 

 

 

 

개발자 도ꡬ (F12)λ₯Ό ν†΅ν•΄μ„œ νŽ˜μ΄μ§€ μ†ŒμŠ€ μ½”λ“œλ₯Ό 확인해보면,

search 즉 κ²€μƒ‰λž€μ— μ‚¬μš©λ˜λŠ” λ³€μˆ˜λŠ” titleμ΄λΌλŠ” 것을 μ•Œ 수 μžˆλ‹€.

 

GETλ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•˜λ―€λ‘œ URLμ—μ„œλ„ λ³€μˆ˜μ™€ λ³€μˆ˜μ— λŒ€μž…ν•œ 값을 λ…ΈμΆœν•œλ‹€.

κ·ΈλŸ¬λ‚˜ AJAX둜 κ΅¬ν˜„ν•œ νŽ˜μ΄μ§€μ΄λ―€λ‘œ, URL에 μžˆλŠ” λ³€μˆ˜μ— 값을 μž…λ ₯ν•˜μ—¬λ„ κ²°κ³Όλ₯Ό 좜λ ₯ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

--> 즉 κ²€μƒ‰λž€μ— 쿼리문을 μž…λ ₯ν•˜λ©΄ 화면에 κ²°κ³Όκ°€ 좜λ ₯λ˜μ§€λ§Œ, 검색 λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ μž…λ ₯ κ²°κ³Όκ°€ 좜λ ₯ λ˜μ§€ μ•ŠμŒ.

 

 

 

 

검색창에 쿼리λ₯Ό μž…λ ₯ν•˜λ©΄, URL에 쿼리가 λ…ΈμΆœλœλ‹€.

 

λ°μ΄ν„°λ² μ΄μŠ€λŠ” 전에 μ‹€μŠ΅ν–ˆλ˜ DB와 κ°™μœΌλ©° (bWAPP), SQL 쿼리와 μ „λΆ€ κ°™κΈ° λ•Œλ¬Έμ— 거의 μƒλž΅ν•˜κ³  λ§ˆμ§€λ§‰ λΆ€λΆ„λ§Œ 

μ‹€μŠ΅ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

 

 

(Database이름, table 이름을 μ•Œκ³  μžˆμ„ λ•Œ column이름을 μ•Œμ•„λ‚΄λŠ” 쿼리)

 

쿼리문 >  0' union select null,column_name,null,null,null,null,null from information_schema.columns where table_name="users" and table_schema="bWAPP"#

 

 

(μœ„ 쿼리문을 톡해 μ•Œμ•„λ‚Έ 정보λ₯Ό 톡해 μ‚¬μš©μž 정보λ₯Ό νƒˆμ·¨)

 

쿼리문 > 0' union select null,id,login,password,email,secret,null from users#

 

 

νŽ˜μ΄μ§€μ˜ μ‚¬μš©μžμ˜ 계정 정보 λ…ΈμΆœ 

SQL μΈμ μ…˜ 성곡

 

 

 

 

 

λŒ€μ‘λ°©μ•ˆ

 

'λ‚œμ΄λ„ 상'μ—μ„œλŠ” λ‚œμ΄λ„ ν•˜μ™€ λ‹€λ₯΄κ²Œ SQLμΈμ μ…˜μ„ μ‹œλ„ν•˜μ—¬λ„ μ•„λ¬΄λŸ° κ²°κ³Όκ°€ λ‚˜μ˜€μ§€ μ•ŠλŠ”λ‹€.

 

우회 방법은 sqli_10-1.php νŽ˜μ΄μ§€μ˜ μ†ŒμŠ€ μ½”λ“œλ₯Ό 확인해보면 λœλ‹€.

 

μ•„λž˜ μ½”λ“œλ₯Ό 확인 해보면, sqli_10-1.phpμ—μ„œ AJAXλ₯Ό ν˜ΈμΆœν•  λ•Œ "sqli_10-2.php"λ₯Ό 호좜 ν•˜κ³  μžˆλ‹€.

 

 

sqli_10-1.php μ†ŒμŠ€ μ½”λ“œ

 

"sqli_10-2.php" μ†ŒμŠ€μ½”λ“œλ₯Ό 확인해보면 sqli_check_2ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μž…λ ₯ν•œ 

 

SQLꡬ문을 쿼리둜 μΈμ‹ν•˜μ§€ μ•Šκ²Œ μš°νšŒν•˜μ˜€μŒμ„ μ•Œ 수 μžˆλ‹€.

 

 

sqli_check_2 μ†ŒμŠ€ μ½”λ“œ

 

 

이 ν•¨μˆ˜λ₯Ό μ‚΄νŽ΄λ³΄λ©΄, 전에 SQLμΈμ μ…˜ λ‹€λ₯Έ 곡격듀과 같은 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ”λ°

functions_external.php에 μ •μ˜λ˜μ–΄ 있고, PHPκΈ°λ³Έ 제곡 ν•¨μˆ˜μΈ

mysql_real_escape_string() ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬, μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 데이터λ₯Ό μš°νšŒν•˜κ³  μžˆλ‹€.

 

 

 

 

 

즉 μ‚¬μš©μžκ°€ μž…λ ₯ ν•  λ•Œ SQL문법에 μ‚¬μš©λ˜λŠ” 특수문자λ₯Ό μž…λ ₯ν•˜λ©΄,

λ°±μŠ¬λž˜μ‹œλ₯Ό λΆ™μ—¬ SQLλ¬Έλ²•μœΌλ‘œ μΈμ‹ν•˜μ§€ μ•Šκ²Œ λ°©μ–΄ ν•˜λŠ” 것이닀.

 

λ°˜μ‘ν˜•

'Game > Bee-box' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Bee-box] SQL μΈμ μ…˜ - Stored(Blog)  (0) 2020.08.18
[Bee-box] SQL μΈμ μ…˜ - Login Form/Hero  (0) 2020.08.11
[Bee-box] SQL μΈμ μ…˜ - POST/Select  (0) 2020.07.31
[Bee-box] SQL μΈμ μ…˜ - GET/Select  (0) 2020.07.24
Contents

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

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