People often ask me "How did you learn how to hack?" The answer: by reading. This page is a collection of the blog posts and other articles that I have accumulated over the years of my journey. Enjoy!
callAgreement is to use a placeholder ctx so that Solidity can read it directly from the argument ctx that should be there. deleteAnyFlowBad. callAgreement. This creates the ctx and puts a stamp on it.createFlow to verify that the calling host contract is authorized to do so.authorizeTokenAccess to hand over the ctx and deserialize the original call.deleteAnyFlowBad. After everything is merged into a single byte array. The expected empty ctx can contain spoofed data, causing a MAJOR problem to occur. Since the abi decoder ignores the legit ctx, we have now tricked the code into parsing the wrong ctx. calldata can be crafted to impersonate other users. This can be used to create IDA indexes on behalf of other users to steal tokens in their possession.