search the flag 풀이 질문

dreamhack 공식 풀이를 읽어봤는데 이해가 잘 안되는 부분이 있어서 질문합니다.

1.제가 코드를 잘못 본 게 아니라면 풀이에 있는 익스플로잇 코드에서 search가 아닌 report에 쿼리를 전달하는데 이렇게 작성한 이유를 잘 모르겠습니다. 그 전까지의 풀이에서는 search에서 object태그와 img 태그를 이용해서 CSP우회를 시도하고 python -m http.server 8001로 결과가 오는 것까지는 이해가 됩니다.
하지만 마지막 부분인 익스플로잇 코드에서 쿼리를 html에 담아 /search가 아닌 /report로 sess.post(f"{URL}/report", data="path": f"{html}")형식으로 보내는데 이유를 알고 싶습니다.

2.풀이의 익스플로잇 코드를 그대로 실행하면 안되고 조금 고쳐야 하나요? 그대로 넣고 서버나 url부분만 변경해서 실행했는데도 안되는 부분이 있어서 기능을 조금 추가해야 하는지 알고 싶습니다.

#web
작성자 정보
답변 1
avatar
hoppi_
대표 업적 없음

안녕하세요 murphy70님!

  1. 먼저 워게임이나 CTF를 많이 푸시다보면, report라는 기능을 자주보시게 될겁니다. 보통 XSS와 같은 클라이언트에서 발생하는 취약점들은 피해자, 즉 제3자가 필요합니다. 제3자의 동작을 수행하도록 주로 python에서는 selenium을 많이 사용합니다. 이것을 이용해서 피해자의 역할을 구현해 놓은 곳이 check_url()입니다. 해당 함수의 로직을 보시면 admin의 권한으로 우리가 사용한 페이로드로 접근을 하시는 것을 볼 수 있습니다. 왜냐하면, 우리는 isAdminFalse이기 때문에 플래그를 볼 수 없지만, admin계정으로 로그인하기 때문에 이것이 가능하고, 페이로드가 동작하여 우리의 서버로 요청을 보내기 때문입니다.
  2. URL 부분을 발급하신 host3.dreamhack.games:<PORT번호> 와 같은 형태로 바꾸시고 페이로드에 YOUR_SERVER부분도 바꿔야하는데, 이 부분은 https://tools.dreamhack.games/main의 Request bin을 이용하시면 됩니다!

더 궁금하신 부분이 있으시면 댓글로 남겨주세요.

2024.04.17. 18:18
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기