창 구성은 low레벨과 똑같다.
<?php
// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
$default = $_GET['default'];
# Do not allow script tags
if (stripos ($default, "<script") !== false) {
header ("location: ?default=English");
exit;
}
}
?>
구성 코드이다.
아무것도 없었던 low 레벨과는 다르게 <script> 태그를 필터링하고 있다.
첫번째 방법은 #으로 요청을 보내는 방법이다.
이렇게 url을 작성해서 보내면 # 뒤 부분은 잘려서 서버에 요청을 전송하고 php 파일에서 필터링 되는 부분에는 걸리지 않게 된다. 하지만 html 파일을 렌더링하는 과정에서 scipt 태그가 들어가게 되고, 스크립트가 실행된다.
두번째 방법은 script 태그 대신에 img 태그를 사용하는 방법이다.
</option></script></select><img src="" onerror='alert(1)'>
이렇게 url을 작성하면 실행이 된다.
option과 script, select 태그를 닫아줘야 하는 이유는 img태그가 select 태그 안에서 실행되지 못하기 때문이다.
이런 식으로 작성이 되어 있어서 태그를 닫아줘야 한다.
이렇게 script 태그가 필터링 되어 있을 때 우회해서 원하는 스크립트를 실행시키는 방법에 대해 알아보았다.
'웹해킹 > DVWA' 카테고리의 다른 글
DVWA XSS(Stored)(medium) 롸업 (0) | 2023.11.17 |
---|---|
DVWA XSS(Reflected)(medium) 롸업 (0) | 2023.11.16 |
DVWA Weak Session IDs(medium)롸업 (0) | 2023.11.16 |
DVWA Blind SQL Injection(medium) (0) | 2023.11.15 |
DVWA SQL Injection(medium) 롸업 (0) | 2023.11.15 |