level 2 Relative Path Overwrite 문제에서
http://host/?page=vuln¶m=on
이라고 입력했을 때는 filter.js가 정상적으로 로드되어 필터링이 되고
http://host/index.php/?page=vuln¶m=on
이라고 입력했을 때는 filter.js가 정상적으로 로드되지 않아 필터링도 적용되지 않는 이유는
<script src="filter.js"></script>
<pre id=param></pre>
<script>
var param_elem = document.getElementById("param");
var url = new URL(window.location.href);
var param = url.searchParams.get("param");
if (typeof filter === 'undefined') {
param = "nope !!";
}
else {
for (var i = 0; i < filter.length; i++) {
if (param.toLowerCase().includes(filter[i])) {
param = "nope !!";
break;
}
}
}
param_elem.innerHTML = param;
</script>
이 코드에서 filter.js를 상대 경로인 /filter.js 로 로드하고 있기 때문이다.
위에서 말한 내용을 이를 기반으로 다시 설명하면
http://host/?page=vuln¶m=on은 현재 문서가 /(루트)라고 보고 filter.js를 요청하기 때문에 정상적으로 로드가 된다.
하지만
http://host/index.php/?page=vuln¶m=on은 현재 문서가 /index.php/라고 보고, filter.js를 요청한다. 하지만 /index.php/에는 filter.js가 없기 때문에 로드를 실패한다.
'CTF & Wargame(WEB)' 카테고리의 다른 글
| level 3 XS-Search (0) | 2025.04.22 |
|---|---|
| level 2 Relative Path Overwrite Advanced (0) | 2025.04.21 |
| level 2 Relative Path Overwrite (1) | 2025.04.18 |
| level 3 CSS Injection (0) | 2025.04.18 |
| level 2 Client Side Template Injection (0) | 2025.04.18 |