SWLUG/μ›Ή ν•΄ν‚Ή

[webhacking.kr] Challenge old-23

waterproof 2023. 11. 9. 22:32


[1] 문제 탐색

 

 

문제 화면이닀.

 

λ‚΄ λ―Έμ…˜μ€ λ¬Έμ œμ—μ„œ μ œκ³΅ν•˜λŠ” μ›ΉνŽ˜μ΄μ§€μ—μ„œ μ œκ³΅ν•˜λŠ” μž…λ ₯ 칸에, <script>alert(1);</script> λ₯Ό μ‚½μž…ν•˜λŠ” 것이닀.

κ·ΈλŸ¬λ‚˜ μ‰½κ²Œ λ˜μ§€ μ•ŠμœΌλ‹ˆκΉŒ 문제일 것이고, μ•„λ§ˆ μž…λ ₯받은 슀크립트 νƒœκ·Έλ₯Ό ν•„ν„°λ§ν•˜λŠ” λ“±μ˜ 방법을 μ‚¬μš©ν•˜μ§€ μ•Šμ„κΉŒ μ‹Άλ‹€.

λ‹€λ₯Έ 취약점을 μ°Ύμ•„λ‚΄λŠ” 것이 문제의 핡심일 것 κ°™λ‹€.

 

 

 

# 문제 νŽ˜μ΄μ§€ μ†ŒμŠ€μ½”λ“œ 뢄석

 

 

 

뢄석 (1)

 

<form> μš”μ†Œμ˜ method 속성은 μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 데이터λ₯Ό μ„œλ²„μ— μ „μ†‘ν•˜λŠ” 방법을 μ§€μ •ν•˜λŠ”λ°, μ˜΅μ…˜ 쀑 ν•˜λ‚˜λ‘œ GET 방식이 μžˆλ‹€.

GET 방식은 μž…λ ₯ν•œ 데이터λ₯Ό URL의 μΌλΆ€λ‘œ λΆ™μ—¬μ„œ μ„œλ²„μ— 보낸닀. 즉, μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 데이터가 URL에 λ…ΈμΆœμ΄ λ˜λŠ” 것이닀.

 

 

뢄석 (2)

 

action 속성은 <form> μš”μ†Œμ—μ„œ 데이터λ₯Ό μ œμΆœν•  λ•Œ μ–΄λ–€ 경둜둜 데이터λ₯Ό 보낼지λ₯Ό μ§€μ •ν•œλ‹€.

이 κ²½λ‘œλŠ” μ„œλ²„ μΈ‘μ—μ„œ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 슀크립트의 경둜λ₯Ό λ‚˜νƒ€λ‚Έλ‹€. 

이 λ¬Έμ œμ—μ„œλŠ” action이 index.php둜 μ„€μ •λ˜μ–΄ 있고, μ‚¬μš©μžκ°€ 폼을 μ œμΆœν•˜λ©΄ 데이터가 index.php 파일둜 μ „μ†‘λœλ‹€.

 

 

뢄석 (3)

 

<input> μš”μ†Œμ—λŠ” name 속성이 μžˆλ‹€.

이 속성은 μ„œλ²„λ‘œ 데이터λ₯Ό 전솑할 λ•Œ ν•΄λ‹Ή μž…λ ₯ ν•„λ“œμ˜ 이름을 μ§€μ •ν•˜λŠ” 역할을 ν•œλ‹€.

이 이름은 μ„œλ²„μ—μ„œ μ „μ†‘λœ 데이터λ₯Ό μ‹λ³„ν•˜λŠ” 데 μ‚¬μš©λœλ‹€.

 

<input name="code">

 

예λ₯Ό λ“€μ–΄ 이와 같은 μ½”λ“œμ—μ„œ,

 

name 속성이 "code"둜 μ„€μ •λ˜μ–΄ μžˆλ‹€.

이 경우 μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λ°μ΄ν„°λŠ” μ„œλ²„λ‘œ 전솑될 λ•Œ "code"λΌλŠ” μ΄λ¦„μœΌλ‘œ μ‹λ³„λœλ‹€.

μ„œλ²„ μΈ‘μ—μ„œλŠ” 이 이름을 μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό μ²˜λ¦¬ν•˜κ±°λ‚˜ 검색할 수 μžˆλ‹€.

 

예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ "1234"λΌλŠ” 값을 μž…λ ₯ν•˜κ³  폼을 μ œμΆœν•˜λ©΄, μ„œλ²„μ—μ„œλŠ” "code"λΌλŠ” μ΄λ¦„μœΌλ‘œ μ „μ†‘λœ 데이터λ₯Ό 읽을 수 μžˆλ‹€.

 

PHPμ—μ„œλŠ” $_GET['code']λ‚˜ $_POST['code']와 같은 λ°©λ²•μœΌλ‘œ 이 값을 μ½μ–΄μ˜¬ 수 μžˆλ‹€.

 

 

 

 

# 곡격 μ‹€ν–‰ ν›„ 뢄석

 

 

 

μš°μ„  <script>alert(1);</script> λ₯Ό κ·ΈλŒ€λ‘œ μž…λ ₯ν•˜κ³  μ œμΆœν•œ κ²°κ³Ό,

ν•΄ν‚Ήν•˜μ§€ λ§λΌλŠ” 문ꡬ와 ν•¨κ»˜ μœ„μ—μ„œ λΆ„μ„ν•œλŒ€λ‘œ URLμ—μ„œ μ›ΉνŽ˜μ΄μ§€κ°€ μž‘λ™ν•˜λŠ” 방식을 μ•Œ 수 μžˆμ—ˆλ‹€.

 

 

 

'(', ')', ';', '/' κ°€ URL μΈμ½”λ”©λ˜μ–΄ λ°˜μ˜λ˜λŠ” 것을 확인할 수 μžˆμ—ˆλ‹€.

 

μ—¬κΈ°μ„œ λ‚˜λŠ” index.phpκ°€ νŠΉμ • 문자λ₯Ό URLμΈμ½”λ”©ν•˜λŠ” 것이 μ•„λ‹κΉŒ ν•˜λŠ” 생각이 λ“€μ—ˆλ‹€.

이럴 λ•ŒλŠ” μ–΄λ–»κ²Œ ν•΄μ•Όν• κΉŒ?

 

 

 

μš°μ„  첫 λ°”μ΄νŠΈμ— NULL을 λ„£μ–΄ λ¬Έμžμ—΄ 검사λ₯Ό ν•˜μ§€ λͺ»ν•˜λŠ” 방식을 μ‚¬μš©ν–ˆλ”λ‹ˆ,

필터링 μš°νšŒλŠ” κ°€λŠ₯ν–ˆμ§€λ§Œ 곡격은 λΆˆκ°€λŠ₯ν–ˆλ‹€.

 

 

 

 

 

 

 

 

'sc', 'on', 'im', 'ri', 'pt' 을 μž…λ ₯ν•˜κ³  μ œμΆœν•˜λ©΄ "no hack"μ΄λΌλŠ” 문ꡬ가 좜λ ₯이 λœλ‹€.

 

κ·Έλž˜μ„œ NULL둜 μš°νšŒν•΄λ„ <script>, <oneerror>, <img> νƒœκ·Έλ₯Ό μ‚¬μš©ν•  수 μ—†μ—ˆκ³ , (μΆ”κ°€λ‘œ href도 μ•ˆ 됐닀.)

κ°€μš΄λ°μ— λΌμ›Œλ„£λŠ” 방식도 μ‚¬μš©ν•  수 μ—†λ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆλ‹€.

 

 

 

ν˜Ήμ‹œλ‚˜ ν•΄μ„œ λŒ€μ†Œλ¬Έμžλ₯Ό μ„žμ–΄ μ‚¬μš©ν•΄λ³΄μ•˜λŠ”λ° 이것도 μ‹€νŒ¨ν–ˆλ‹€.

 

κ·ΈλŸ¬λ‹ˆκΉŒ 'sc'와 같은 문자λ₯Ό μž…λ ₯ν•˜λ©΄ 곡격에 μ‹€νŒ¨ν•˜λŠ” 상황인 것이닀...

 

 

 

μ—¬κΈ°μ„œλΆ€ν„° 방법을 더 이상 찾을 수 μ—†μ–΄ λ‹€λ₯Έ 풀이 글을 찾아보며 문제λ₯Ό ν’€μ—ˆλ‹€.


[3] μ˜¬λ°”λ₯Έ 문제 풀이

 

 

λ‹€λ₯Έ μ‚¬λžŒλ“€μ˜ 문제 풀이 글을 λ³΄λ‹ˆ λ‚΄κ°€ 잘λͺ» μƒκ°ν•œ 뢀뢄이 μžˆλ‹€.

 

scriptλ‚˜ oneerror의 'sc', 'on' μ΄λΌμ„œκ°€ μ•„λ‹ˆλΌ,

κ·Έλƒ₯ μž…λ ₯된 μ˜λ¬Έμžκ°€ 2개 이상이면 "no hack"μ΄λΌλŠ” 메세지λ₯Ό 좜λ ₯ν•˜λŠ” κ²ƒμ΄μ—ˆλ‹€...

 

이 λ¬Έμ œλŠ” μ£Όμ†Œμ°½μ— μ›ν•˜λŠ” 문자 사이사이에 NULL을 μž…λ ₯ν•˜μ—¬ μš°νšŒν•΄μ£Όλ©΄ λ˜λŠ” 방식이닀.

(μž…λ ₯ν•˜κ³  μ œμΆœν•˜λŠ” 칸에 λ„£μœΌλ©΄ μ•ˆ λ˜λŠ” μ΄μœ λŠ” κ·Έλ ‡κ²Œ ν•˜λ©΄ %κ°€ 필터링이 λœλ‹€.)

 

<s%00c%00r%00i%00p%00t>a%00l%00e%00r%00t(1);</s%00c%00r%00i%00p%00t>

 

 

μœ„μ˜ 문자λ₯Ό code= 뒀에 μž…λ ₯ν•΄μ£Όλ©΄ λœλ‹€.

 

 

 

 

문제 풀이 μ™„λ£Œ!

 

 

 


[4] μ°Έκ³ 

 

https://intunknown.tistory.com/535

 

Webhacking.kr 23번 -old

webhacking.kr 23번 [λ¬Έμ œν’€μ΄] μ•ˆλ…•ν•˜μ„Έμš”. μ˜€λŠ˜μ€ webhacking.krμ΄λΌλŠ” μ‚¬μ΄νŠΈμ˜ 23번(old) 문제λ₯Ό 풀어보렀고 ν•©λ‹ˆλ‹€. 문제λ₯Ό ν’€κΈ° μœ„ν•΄ ν•΄λ‹Ή μ‚¬μ΄νŠΈλ‘œ μ΄λ™ν•΄μ£Όμ„Έμš”. μ›Ή ν•΄ν‚Ή 23번 λ¬Έμ œν’€μ΄ [200점] 23번

intunknown.tistory.com

 

 


[5] λŠλ‚€ 점

 

두 개 μ΄μƒμ˜ λ¬Έμžμ—΄μ„ μž…λ ₯λ°›λŠ” 것을 λ§‰λŠ” 방식도 μžˆλ‹€λŠ” 것을 μ ‘ν•΄λ³΄μ•˜κ³ , GET 방식에 λŒ€ν•΄ μ°Ύμ•„λ³Ό 수 μžˆλŠ” κΈ°νšŒμ˜€λ‹€.

'SWLUG > μ›Ή ν•΄ν‚Ή' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Dreamhack/λ“œλ¦Όν•΅] csrf-1  (0) 2023.11.10
[Dreamhack/λ“œλ¦Όν•΅] XSS Filtering Bypass  (0) 2023.11.10
[Dreamhack/λ“œλ¦Όν•΅] xss-2  (0) 2023.11.06
[xss-game] Level 5: Breaking protocol  (3) 2023.11.06
[Dreamhack/λ“œλ¦Όν•΅] xss-1  (0) 2023.11.05