코드를 보면 address.delegatecall(msg.data); 이다. 그러면 msg.data는 delegatecall에서 들고올 함수를 넣어야 한다.
call 함수 flow를 보면 vm.prank(alice)로 msg.sender를 alice로 지정했다.
address(proxy).call(abi.encodeWithSignature("pwn()"))을 하면 Proxy의 fallback() 함수로 간다.
Proxy Contract에서 delegate Contract의 pwn()함수를 delegatecall하면 Proxy Contract에서 pwn()함수를 실행한다. 그러면 msg.sender를 변하지 않기 때문에 Proxy Contract에 있는 owner가 msg.sender 즉 alice가 된다.