<html>
<head>
<title>Challenge 23</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
input { background:silver; color:black; font-size:9pt; }
</style>
</head>
<body>
<form method=get action=index.php>
<table border=0 cellpadding=10>
<tr><td><input name=code></td><td><input type=submit></td></tr>
</table>
</form><br><br>
Your mission is to inject <script>alert(1);</script>
<br><br>
</body>
</html>
Your mission is to inject <script>alert(1);</script>
<script>alert(1);</script>을 inject 하면 된다.
근데 <가 필터링되는 것 같다.
위와 같이 입력하니 no hack이라고 뜬다.
"<"만 입력하면 위와 같이 화면에 출력된다.
"sc" 라고 입력하면 no hack이 뜨고, url을 보면 code 파라미터에 sc가 담긴다.
">"를 입력하면 화면에 ">"가 출력된다.
즉, '<', '>', '(', ')' 그리고 'a', 'b' 와 같은 단일 문자는 출력된다.
하지만 'sc', 'script' 와 같은 2개 이상의 문자가 합쳐지면 no hack이 출력된다.
풀이
그렇다면 '<', '>', '(', ')'는 필터링 되지 않기 때문에 그대로 입력하고
'script'와 같은 문자열은 필터링 되므로 우회해야 한다.
이는 URL 인코딩을 통해 우회할 수 있는데, 각 문자들 앞에 %00(null byte)을 붙여 우회할 수 있다.
하지만 위와 같이 "s%00c"를 입력했을 때 s%00c가 그대로 출력된다.
그리고 url을 보면 s%2500c라고 되어 있다.
url 인코딩에서 25는 %를 의미하는 것으로, %00에 있는 %를 인코딩한 것이다.
즉, 입력 창에는 URL 인코딩을 한 번 한 값을 입력했지만, 실제 code 파라미터에 담길 때에는 %도 URL 인코딩 되어 URL 인코딩이 2번 한 값이 들어가게 된다.
그렇다면, URL 입력창에서 code 파라미터의 값을 직접 수정하면 된다.
위의 내용을 바탕으로 아래의 내용을 code 파라미터의 값으로 직접 입력하면 된다.
<%00s%00c%00r%00i%00p%00t>%00a%00l%00e%00r%00t(1)%00;<%00/%00s%00c%00r%00i%00p%00t>
'전쟁 > Webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] old-18 (0) | 2022.07.13 |
---|---|
[webhacking.kr] old-34 (0) | 2022.07.13 |
[Webhacking.kr] old-20 (0) | 2022.07.13 |
[Webhacking.kr] old-54 (0) | 2022.07.13 |
[Webhacking.kr] old-17 (0) | 2022.07.13 |