SHELLCTF에 나온 첫번째 웹해킹 문제
XSS 와 관련된 문제이다.
XSS 는 Cross Site Script 의 약자로
웹서버에 인가되지 않은 사람이 악성 스크립트를 삽입할 수 있는 취약점이다.
보통 공격자들은 자신의 서버를 하나 열어놓은 뒤에,
XSS 취약점을 이용하여 타겟 웹 서버에 악성 스크립트를 삽입한 뒤,
사용자들의 인증정보(쿠키값, 세션값 등)를 탈취하는데 이용한다.
문제페이지에 접속하면 이런 화면이 나온다.
GiXe me Some intresting Inuput Security is An Illusion 라고
간접적으로 이 문제가 XSS 취약점을 이용한 것이라는걸 알려주고 있다.
화면 가운데 뭔가 입력하고 제출할 수 있는 창이 보이는데
시험삼아 AAA라고 입력해봤더니
Your lower cased input is : aaa 라고 출력되었다.
몇번 더 테스트 해보니
해당 페이지는 단순히 사용자가 입력한 값에서 알파벳 대문자가 있을 경우
소문자로 바꿔서 화면에 출력해주는 기능만 있다.
XSS 의 기본중의 기본 페이로드인
<script>alert(1)</script> 를 입력해봤다.
그랬더니 <>alert(1) 이라는 출력만 나왔는데
이렇게 출력이 나왔다는건 script 라는 단어가 공백으로 치환되도록 필터링이 걸려있다는 뜻이다.
단순하게 단어를 한번만 공백으로 치환할 경우 우회하가 아주 쉽다.
<scscriptript>alert(1)</scscriptript>
이런식으로 script 단어 안에 script 를 한번 더 써주는 것이다.
그럼 script 가 공백으로 치환되어 사라지면서
<script>alert(1)</script> 가 완성된다.
위처럼 입력하면 XSS 가 성공해
알림창이 뜨는것을 볼 수 있다.
f12를 눌러 개발자 도구를 이용해 웹 페이지 소스를 확인해보면
입력한 <script>alert(1)</script> 가 잘 들어가 있는것을 볼 수 있다.
여기서 좀 시간이 걸렸는데
XSS가 된다는 것을 확인했는데 플래그를 어떻게 얻는건지 못찾았기 때문이다..
보통 웹해킹 XSS 문제들은 관리자에게 REPORT 하는 페이지가 따로 있어서
관리자의 쿠키값을 탈취하는 형태로 나오는데,
여긴 아무리 찾아봐도 사용자 입력을 알파벳 소문자로 바꾸는 기능밖에 없었다.
정답은 아주 간단했다..
XSS 를 하기 위해서 <script> 태그만 사용할 수 있는것은 아니다.
img, iframe 과 같은 다양한 태그들을 사용 가능하고
이 문제의 경우 img 태그를 이용하면 플래그를 획득할 수 있었다.
페이로드는 다음과 같다.
<img src=x onerrer=alert(1)>
'CTF > 웹해킹' 카테고리의 다른 글
[SHELLCTF] ILLUSION - 웹해킹 / Command Injection / 명령어삽입 (46) | 2022.09.27 |
---|---|
[SHELLCTF] Extractor - 웹해킹 / SQL Injection (82) | 2022.09.13 |
[TFCCTF] PONG - 웹해킹 / Command Injection / 명령어삽입 (53) | 2022.09.07 |
[HSCTF9] squeal - 웹해킹 / SQL Injection (54) | 2022.07.11 |
[HSCTF9] gallery - 웹해킹 / LFI (57) | 2022.07.07 |