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!
ToolPane, it takes in an allowlist to stop the creation of arbitrary .NET types. Markup is submitted to this tool, that will then create a <%@ Register %> directive around it and a tag block. RegisterDirective.GetHtml() reserializes the attribute by writing into into a raw value between two double quotes. If this value contains double or single quotes, we can break out of that context, allowing XAML injection similar to XSS.WebPartPage.OnInit() calls CreateToolPane() unconditionally before any auth bugs. Apparently, they knew about this for a long time but didn't report it because it had no impact.