실습 환경 구축은 이 글에 설명되어있다. (https://rimystory.tistory.com/18)
HTML Injection - Reflected (GET) 공격 실습
1. 난이도: low
[입력화면]

- First name: <h1>Success</h1>
- Last name: <img src=http://192.168.56.101/bWAPP/images/bee_1.png>
[실행화면]

밑에 Success + 이미지가 뜬다. (삽입 공격 성공)
2. 난이도: medium
[입력화면]

난이도 low와 똑같이 입력하면 태그가 필터링되어 실행되지 않는다.
따라서 태그에 사용되는 '<' '>' 를 URL 인코딩 해야한다. (ASCII 의 HEX값에서 %를 붙인 값)
[입력화면]

- First name: %3Ch1%3ESuccess%3C%2Fh1%3E
- Last name: %3Cimg src=http://192.168.56.101/bWAPP/images/bee_1.png%3E
[실행화면]

난이도 low 성공화면과 같이 Success+이미지가 뜬다. 공격 성공.
3. 난이도: high
[입력화면]

난이도 medium과 동일하게 공격해도 HTML 태그로 해석하지 않고 문자열로 출력한다(우회된다).
우회 과정을 확인하기 위해 가상환경에서 '/var/www/bWAPP/htmli_get.php' 코드를 열어보면 (vi 명령으로 열었다),
[코드화면]

난이도 low (case 0)은 no_check, medium은 xss_check_1, high는 xss_check_3 함수로 실행되는 것을 볼 수 있다.
함수 상세 로직은 같은 경로(/var/www/bWAPP) 아래 functions_external.php에 정의되어 있다.
[코드화면]

(대응방안) return 값에서 보이듯 php에서 제공하는 htmlspecialchars 라는 함수로 입력값을 우회하여 UTF-8로 반환하면 HTML 인젝션을 막을 수 있다.
출처: [한빛미디어] 비박스 환경을 활용한 웹 모의해킹 완벽 실습
'Projects > 애플리케이션 보안' 카테고리의 다른 글
| [bWAPP] PHP Code Injection 공격 실습 (0) | 2025.08.21 |
|---|---|
| [bWAPP] OS Command Injection 공격 실습 (0) | 2025.08.21 |
| [bWAPP] iFrame Injection 공격 실습 (0) | 2025.08.21 |
| [bWAPP] HTML Injection - Stored (Blog) 공격 실습 (0) | 2025.08.21 |
| [bWAPP] HTML Injection - Reflected (POST) 공격 실습 (2) | 2025.08.18 |