ASP.NET has request validation which resides in Machine.config and is ON by default, besides that it's rewritten to a custom error page as you already stated. On the looks of it, they know what they are doing. But the ASP.net 2 request validation only filters on;
1. Look for &#
2. Look for ‘<’ then alphas or ! or / (tags)
3. Skip elements with names prefixed with double underscore (__)
Silly but true.
So figure out what it is running, it's easy.