JavaScript에서 괄호 없이 함수를 호출하는 또 다른 방법
Yet another way to invoke functions without parentheses
JavaScript에서 괄호 없이 임의의 함수를 실행하는 새로운 트릭이 공개됐다. Error 객체의 prepareStackTrace를 Function 생성자로 덮어쓰고, Array.prototype.toString과 Object.prototype.message를 오염시켜 스택 트레이스를 악성 코드로 변환한 뒤, valueOf 트릭으로 실행하는 방식이다. 최종 페이로드는 단 네 줄로 구성되며 브라우저 콘솔에서 바로 테스트할 수 있다.
이 페이로드는 Error 객체의 prepareStackTrace 함수를 덮어써 임의의 함수를 생성하는 방식으로 작동한다.