LEVEL : Low
정상적인 입력
Frist name : seomj
Last name : 74
코드입력
Frist name : <h1>Hello</h1>
Last name : <h2>Bye</h2>
-> 'Welcom+First name 입력값+Last name 입력값'으로 출력
-> 입력값을 검증하지 않아 HTML 태그로 인식하여 그대로 해석
-> 이를 통해 악의적인 공격이 가능
LEVEL : Medium
Low level 입력
Frist name : <h1>Hello</h1>
Last name : <h2>Bye</h2>
-> Low와는 다른 결과가 나타남
-> 태그를 필터링한다고 예측 가능
-> 문자를 URL 인코딩하여 입력
-> URL 인코딩은 ASCII 코드의 HEX 값 앞에 %를 붙인 값 - '<' = %3C, '>' = %3E, '/' = %2F
(URL 인코딩은 코딩을 해서도 구현이 가능하며 사이트를 이용할 수도 있음)
URL 인코딩 후 입력
Frist name : %3Ch1%3EHello%3C%2Fh1%3E
Last name : %3Ch2%3EBye%3C%2Fh2%3E
코드 확인
(/var/www/bWAPP/htmli_get.php)
-> switch문을 통해 단계별로 case를 실행
-> medium은 value 값이 1이므로 case 1 실행
-> xss_check_1() 함수는 functions_external.php에 존재 (include 부분을 참조하면 파악 가능)
-> '<', '>' 문자를 HTML Entities(<, >)로 변환
-> urldecode() 함수를 이용해서 URL 인코딩 문자를 디코딩해서 다시 변수에 저장
-> '<', '>' 문자를 단순한 괄호로 인식, 태그로 인식 X
LEVEL : High
Low level 입력
Frist name : <h1>Hello</h1>
Last name : <h2>Bye</h2>
Medium level 입력
Frist name : %3Ch1%3EHello%3C%2Fh1%3E
Last name : %3Ch2%3EBye%3C%2Fh2%3E
-> htmlspecialchars() 함수 사용
코드 확인
(/var/www/bWAPP/htmli_get.php)
-> high은 value 값이 2이므로 case 2 실행
-> xss_check_3() 함수는 functions_external.php에 존재 (include 부분을 참조하면 파악 가능)
※htmlspecialchars
특수 문자를 HTML 엔티티로 변환
출처: https://tkdrms568.tistory.com/127?category=853509 [보안 신입사원의 보안 공부]
출처: btyy.tistory.com/entry/HTML-injection%EC%9D%B8%EC%A0%9D%EC%85%98-Reflected%EB%B0%98%EC%82%AC-GET
'Study > Web' 카테고리의 다른 글
[DVWA] Stored XSS (0) | 2021.06.13 |
---|---|
[DVWA] Reflected XSS (0) | 2021.06.13 |
XSS(Cross Site Scripting) (0) | 2021.06.13 |
[Web]robots.txt (0) | 2021.01.03 |
HTTP Request, Response (1) | 2020.07.12 |