제가 하고 있는 풀이가 어떤부문이 잘못된 건지 궁금합니다.

프로토타입 폴루션을 이용해서 푸는 문제라는건 알았습니다.

  1. 먼저 무작위의 파일을 생성한 후
  2. /test?func=rename을 통해 값을 설정하는대 이때 filename=1에서 생성한 파일명.__proto__&rename=/%2e%2e/%2e%2e/flag를 get을 통해 넣었습니다.

그런대 이렇게 넣으면 filename.replaceAll is not a function이라는 문구가 뜨면서 동작하지 않습니다.

도대체 어떻게 프로토타입 폴루션이 어떻게 돌아가는 구조인가요??
구글을 통해 설명글을 다 보았지만 이해가 가지 않습니다.

#web
작성자 정보
답변 2
avatar
UKO
2022 Christmas CTF 운영

해당 사이트에서 프로토타입 폴루션이 어디서 터지는가? 를 생각하시고 코드를 자세히 보시면 왜 피아바수님이 사용한 방법이 막히는지 알게 되실것 같습니다.

그리고, 프로토타입 폴루션 취약점을 알고 계신다 하더라도 해당 사이트를 로컬에서 구현 하시면서 (해당 챌린지 공격 벡터, 어디서 왜 막히는지 등..) 풀어보시면 더 수월하게 해결 하실 것 같습니다.

2023.02.28. 14:24
avatar
fr0g2s
Beta Best Contributor

저는 정상적인 파일 만들고 읽으려고해도 같은 에러가 뜨더군요. 버전에 따라 다릅니다.

node 14.7.0 버전쓰고있는데 replaceAll()은 15.0.0 부터 지원하네요.

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