webhacking.kr 공부...공..부

[webhaking.kr_old] 23번

MININI 2021. 12. 26. 19:26

<문제>

믄제


저기 밑에 inject <script>alert(1);</script>를 하라고 했으니까...

&lt;script&gt;alert(1);&lt;/script&gt;를 입력한 모습

<script>alert(1);</script>를 일단 쳐 봤는데 no hack이랜다..

s를 입력함.

한 글자만 입력했을 때는 no hack이 안 뜨고 그 글자 그대로가 뜸.
근데 글자를 2개 이상 붙여쓰면 바로 no hack.

url에 v&lt;s(1을 입력 한 모습

저기 입력란에 (, <이런걸 입력하고 나면 다시 입력했을때 반영이 잘 안됐음. url에다가 입력해야 잘 작동 했음.
왜그러지?
아무튼 그래서 <,>,/,(,)이런 애들은 앞뒤로 숫자 붙어나와도 no hack 안 뜬다....
----> 영어만 2글자 이상 붙으면 no hack



근데 구글에 <script>alert(1)</script>를 치니까 Null byte injection을 이용하는 것이라는 걸 알게됨.

Null byte injection이란?
문자열에 null문자(\0)삽입하면 null문자를 만나면 문자열이 끝난 것으로 간주함.
그래서 url의 code 값에 문자 사이사이에 null문자 url인코딩 한 값(%00) 삽입.

<s%00c%00r%00i%00p%00t>a%00l%00e%00r%00t(1);</s%00c%00r%00i%00p%00t>

근데 여기서 의문.
%00을 만나면 문자열 끝난 것으로 간주한다면서
왜 %00제일 앞에다 넣고 뒤에 <script~~~~~~넣으면 왜 또 안되는 것인지? 모르겠음.