Exploits Explained: How Log4j, Buffer Overflows and Other Exploits Work