본문 바로가기
Web/Webhacking.kr

Webhacking.kr Challenge old-23 문제 풀이

by jh117jh 2023. 7. 5.
728x90

이번에 풀 문제는 23번!

 

미션이 <script> alert(1);</script>를 작성하는 걸로 보야 xss문제인 것 같다.

 

제시된 소스코드가 없으므로 하나씩 대입하면서 조건들이 무엇인지 알아봐야된다.

 

당연히 필터링이 있을 줄 알고 특수기호들을 입력해 봤는데

전부 입력되어 화면이 출력되었다.

 

그럼 script나 alert같이 특정 문자가 필터링되어있을 거라 생각하고 script를 입력해 봤다.

역시 필터링되어 있었다. 

 

이제 문자 우회를 하려고 했더니

 

상관없는 문자를 입력해도 필터링이 되는 것을 발견하였다.

 

여러 시도를 해본 결과 두 개의 문자가 연속되면 필터링이 되는 것 같다. 즉, 두 글자이상 붙어있으면 안 된다.

(중간에 공백이 있으면 입력 가능 Ex) s c r i p t )

 

그러므로 문제 푸는 방향을 변경해야 된다. (오히려 더 쉬워졌을지도...?)

 

Lord of SQL을 풀면서 초반에 url인코딩을 다뤘는데 거기서 Null 문자가 있었다.(url 인코딩: %00)

Null이란 "값이 없음"을 뜻하고 공백이나 0 하고는 다른 개념이다. 진짜 값이 존재하지 않는 것을 뜻함.

아래 사진을 보면 더 이해하기 쉽다.

 

문자 사이에 공백을 넣을 때
문자 사이에 Null을 넣을 때

이를 이용하여 <script> alert(1);</script> 사이에 각각 %00을 입력해 주면 된다.

 

<%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을 입력할 시 한번 더 인코딩이 되어 지난 27번 문제와 같이 %2500으로 인코딩 된다.

그래서 저는 url에 직접 넣어줬습니다.

 

728x90