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!
HTTP.sys. Finding a vulnerability in a web server allows millions of sites to be compromised in one go. Accept-Encoding headers dictates which content-coding can be sent back to the client such as gzip, * or deflate. This can be in the form of a list as well. An example with a list looks like Accept-Encoding: deflate, gzip;q=1.0, *;q=0.5. ,) a path can be taken that will migrate some but not all of the nodes. content-type to be a form-urlencoded encoded in order to bypass this protection.Code attribute. In newer versions, this is 2, 2, and 4 bytes in size. {"$ne":1} would force the query to always return true instead of being a normal input.token does not have its type validated but is added directly into the query. Hence, NoSQLi operators can be injected into this in a blind fashion.regex operator can be used to character by character to steal a users password reset. This is a horrible vulnerability that allows complete compromise of any non-2FA account.users.list function. This function takes a parameter that is used for the users collection information. Because not all fields in the collection should not be accessible by everyone, there is a denylist of items. $where operator can take JavaScript expressions for more complicated queries but only within the context of the MongoDB instance. By triggering an error message within the query via the JavaScript in the $where clause, the response could contain secrets inside of it!vm module which is apparently not made for security. To escape the VM context, the attacker has to get access to objects from the parent context. By referencing parameters given by the parent, a simple 3 lines of JavaScript gives access to the host machine.