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