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!
__proto__) object. This object-based inheritance gives JavaScript flexibility and power, but with great power comes great responsibility! __proto__[field] = value then checking to see if this had been inherited by the application. They wrote a chrome extension that automatically did this when visiting a page, which is pretty rad!backbone for query parameter handling. By passing in __proto__.x=11111 as a parameter, the prototype could be poisoned. Using the untrusted types extension, a few interesting syncs can be found to inject directly into the DOM. __proto__, you can use [constructor][prototype] as well. If you're a bug bounty hunter, this is a real good way to make extra money from the same bug. src then changed the onerror handler to be JavaScript that they controlled. When the image failed to load, this would execute JavaScript in the context of the page. The URL query parameter is :__proto__[src]=image&__proto__[onerror]=alert(1).querystring, which is vulnerable to prototype pollution. They found that the pollution was only possible if the property was a number. They found a real crazy payload if knockout.js was being used, but nothing else. __proto__[123] you will notice that the value is set to 'xx'. To me, this was really helpful for visualizing the vulnerability class.