처음 문제에 들어가면 보이는 화면이다. 텍스트를 입력할 수 있는 상자가 보이고 옆에 제출버튼이 있다.
아래를 보면 이러한 문장이 보이는데 여기서 우리는 문제의 힌트를 얻을 수 있다. script문을 실행시키는 것이 이 문제를 푸는 방법으로 보인다.
JAVASCRIPT문은 <script> 태그를 이용해서 html 문서에 직접 작성해 동작시킬 수 있다,
그렇다면 저 문장 전체를 입력하면 어떻게 될까?
no hack라는 문장이 나온다.
위에 URL을 살펴보자.
?code=<script>alert%281%29%3B<%2Fscript> 이 부분을 통해 일단 code라는 변수에 GET 방식으로 작성한 문자열이 전달되는 것을 알 수 있다. 혹시 문자열 필터링일까?
평범한 문자열을 삽입하였을 때는 문자열 필터링이 일어나지 않는 모습을 볼 수 있다.
URL 인코딩 방법을 사용해보자.
<%73%63%72%69%70%74>%61%6C%65%72%74(1);</%73%63%72%69%70%74>
다음의 문자열을 값으로 넣었다.
문자열이 그대로 출력되는 것을 보아 이 방법은 아니다.
띄어쓰기로 USL에 넣어 우회한다면 될까?
<%00s%00c%00r%00i%00p%00t%00>%00a%00l%00e%00r%00t%00(1);<%00/%00s%00 c%00r%00i%00p%00t%00>
다음의 값을 넣어보자.
정답이 아니었다.
이 방법도 아니라면 NULL 문자를 사이사이에 넣어서 우회하는 방법일까?
<s%00c%00r%00i%00p%00t>a%00l%00e%00r%00t(1);
위에 문자열을 입력하였다.
다음의 공격은 NULL Byte Injection 이라는 취약점이다.
NULL Byte Injection 공격이란? URL로 인코딩된 NULL Byte 문자(%00 or 0x00)를 입력 데이터에 이용한다. 악의적인 공격자에 의해 악성코드 파일을 업로드하여 시스템 권한을 획득하거나 주요 정보 파일이 유출될 가능성이 있다.
'Webhaking > WebHaking CTF' 카테고리의 다른 글
[Webhaking.kr] old 38번 (0) | 2021.11.14 |
---|---|
[Webhaking.kr] old 20번 (0) | 2021.09.30 |
[Webhaking.kr] old 16번 (0) | 2021.09.30 |
[Webhaking.kr] old 26번 (0) | 2021.09.29 |
[Webhaking.kr] old 24번 (0) | 2021.09.29 |