-
<Webhacking.kr> old-23Wargame/Webhacking.kr 2021. 12. 6. 14:03
script로 alert(1)을 주입하라고 한다.
페이지 소스 코드를 살펴보면
<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>
GET 방식이라는 것 외에는 힌트가 될 만한 것이 보이지 않는다.
input 박스에 1을 입력하면
입력한 값 그대로를 출력한다.
GET방식이므로 URL 창에 "?code=<script>alert(1);</script>"를 입력하면
"no hack"을 출력한다.
input 박스에 <>;()를 입력하면
<, >, ;, ()는 필터링의 대상이 아닌 것을 알 수 있다.
input 박스에 alert나 script를 입력하면
"no hack"을 출력한다.
즉, alert와 script 문자열 그대로를 필터링한다.
이 경우, 문자 사이사이에 NULL 문자(URL encoding 방식으로 %00)을 입력하면 된다.
"?code=<s%00c%00r%00i%00p%00t>a%00l%00e%00r%00t(1);</s%00c%00r%00i%00p%00t>"를 입력하면
문제를 해결할 수 있다.
'Wargame > Webhacking.kr' 카테고리의 다른 글
<Webhacking.kr> old-26 (0) 2021.12.12 <Webhacking.kr> old-27 (0) 2021.12.12 <Webhacking.kr> old-24 (0) 2021.12.06 <Webhacking.kr> old-22 (0) 2021.12.05 <Webhacking.kr> old-21 (0) 2021.12.03