문제 링크
https://x55.is/brutelogic/lab/inside-handler.php?p=dddd
목표 & 사용 도구
목표: alert 함수를 통해 경고창을 화면에 띄우는 것을 목표로 합니다.
사용도구: 개발자 도구
문제 풀이 - https://x55.is/brutelogic/lab/inside-handler.php?p=dddd
- p 파라미터에 임의의 값을 입력하고 페이지에 접속해 보면 콘솔을 확인하라고 나옵니다. 개발자 도구 콘솔 탭에 들어가면 파라미터에 입력한 값이 콘솔 탭에 출력되고 있는 것을 볼 수 있습니다.

- p 파라미터 값에 특수문자 4개 <, ', ", >를 삽입하여 접속한 뒤 콘솔 탭에서 결과를 확인해 보면 싱글 쿼터, 더블 쿼터가 필터링 되어 출력이 되지 않고 있는 것을 알 수 있습니다.

- 추가로 Elements 탭에서 코드를 확인해 보면 이벤트 속성인 onload가 있고 입력 값이 doSomething이라는 함수의 인자 값으로 들어가고 있는 것을 볼 수 있습니다.

- 해당 문제는 HTML 파서, JS 엔진에 작동 방식을 이용하여 해당 문제를 풀 수 있습니다. HTML 파서는 파싱 단계에서 HTML Entity를 만나게 되면 HTML Entity가 의미하는 문자로 변환하며 JS 엔진에서는 변환된 결과를 가지고 문법을 처리하게 됩니다.
| HTML 파서 입장 : ' (HTML Entity - hex)을 보고 HTML Entity에 해당하는 문자인 싱글 쿼터 ' 로 변환함. JS 엔진 입장 : ' 을 가지고 문법 처리 +) HTML Entity 치환 방식은 여러 개가 존재하며 현재 치환방식은 16진수(hex)로 치환한 방식입니다. 다른 HTML Entity 치환 방식을 사용해도 괜찮습니다. |
HTML 파서
| dddd' |
JS 엔진
| dddd' |
- p 파라미터에 HTML Entity로 '(hex)을 입력해 보고 콘솔 탭에 들어가 보면 문법 에러가 뜨며 사용자의 입력 값으로 코드에 영향을 미치고 있는 것을 볼 수가 있습니다.
(* '에서 & , # 기호는 각각 파라미터 구분자와 프래그먼트 식별자로 의미가 있는 있는 기호이기 때문에 URL 인코딩을 통해 해당 기호들을 바꿔서 입력해 줘야 합니다. 바꿔주지 않으면 '으로 인식하지 못합니다. ' -> %26%23x0027)

- 따라서 HTML 파서와 JS 엔진 동작 방식을 이용하여 XSS 공격을 시도할 수 있습니다.
[페이로드(입력 값)]
| 페이로드: dddd%26%23x0027);alert(1);// 또는 dddd%26%23x0027);alert(1);x=(' <body onload="doSomething('___입력 값___')"> <!-- 주석을 이용하여 싱글 쿼터, 닫는 괄호 처리 --> <body onload="doSomething('dddd%26%23x0027);alert(1);// ')"> <!-- 더미 속성을 이용해서 싱글 쿼터, 닫는 괄호 처리--> <body onload="doSomething('dddd%26%23x0027);alert(1);x=('')"> *** 마지막에 한 줄 주석 처리(//) 또는 더미 속성을 해주지 않는다면 마지막에 싱글 쿼터('), 닫는 괄호가 남기 때문에 문법 에러가 발생하여 alert 함수가 동작하지 않습니다. |
- 주석 처리를 이용한 페이로드를 입력합니다.

- 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인할 수 있습니다.

- 더미 속성을 이용한 페이로드를 입력합니다.

- 결과를 확인해 보면 삽입된 스크립트가 정상 작동하여 경고 창을 성공적으로 띄우며 XSS(RXSS) 공격에 성공했음을 확인할 수 있습니다.

'[WEB] CTF & Wargame > x55.is(CTF)' 카테고리의 다른 글
| x55.is(CTF) - XSS 문제 풀이 (3/4) (1) | 2026.01.12 |
|---|---|
| x55.is(CTF) - XSS 문제 풀이 (2/4) (0) | 2026.01.05 |
| x55.is(CTF) - XSS 문제 풀이 (1/4) (0) | 2025.12.29 |


































































































