[webhacking.kr]old-23 write up

zzsla·2023년 4월 26일
0

문제 정보

없다.

문제

문제에 들어가면 'Your mission is to inject <script>alert(1);</script>' 라는 글과 위에 입력칸이 있다.

분석

한 번 <script>alert(1);</script>을 넣어본다.
그러자 nohack이라는 문구만 뜨고, 주소창에 ?code=에 값이 들어가는 것을 알 수 있다.

nohack이라는 문구가 뜨는 것을 봤을 때 어딘가 필터링이 되고 있는 것을 알 수가 있다. 그래서 필터링 되는 부분을 찾아본다.
alert, script이 필터링에 걸렸다.
그러면 몇 글자가 적혀야 필터링에 걸리는지 알기 위해 al만 적어서 제출해 봤는데 이것 또한 필터링에 걸렸다. 즉 두글자 이상 있으면 필터링에 걸린다.
a만 적었을 때

al을 적었을 때

필터링이 안 되는 부분은 ;,(1),<,>,/,영어 한글자씩이다.

취약점

이제 이 필터링을 우회해야 한다. 그런데 필터링되는 부분을 찾다보면 주소창에 몇몇 특수문자는 아스키코드로 출력되는 것을 알 수 있다.

아스키코드 중에는 NULL값이 나타내는 값이 있는데 바로 %00이다.
그래서 한 번 주소창에 al 사이에 %00를 넣어봤다. 그러자 al이 출력이 되었다.

익스플로잇

%00을 통해 필터링 우회를 할 수 있다는 것을 알게 되었다.
이것을 활용하여 코드를 작성하면 이렇게 나온다.

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

이 코드를 가지고 주소 ?code=에 작성하면 script가 작동한다.

그리고 문제가 풀린다.

profile
[README]newbi security hacker :p

0개의 댓글