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!
obj["test"] may use the first key but the obj.toString() may use the second. ipc_port pointer and a host_notify_entry pointer due to failure to account for the semantics of IKOT_HOST_NOTIFY ports in turnstile code.kdata field is a large union with 6 different potential fields. In this case, the kernel did not catch that a situation that the port type could be changed from a special_reply_port to a host_notify by doing specific actions when interfacing with this code. special_reply_port code gets used and it actually has a type confusion since it has been changed to a host_notify value. Using this, the author claims that an arbitrary read/write primitive would be possible. union in older code between for the values ReplyHandle and RegIndex. When the ReplyHandle is used as an 8 byte kernel pointer, then the RegIndex is only uses the first half of the value. ReplayHandle is a kernel pointer and the RegIndex is a 4 byte ULONG. When the code was originally created on a 32-bit system, the pointer also would have been 4 bytes. When the move was made to 64-bit, the bug was created!X-Forwarded-For header in order to change the IP address being used for the brute force protections. So, if one IP gets blocked, you can just switch to the next with the X-Forwarded-For header. This is an interesting bypass that is probably built into frameworks without people even realizing it. /actuator/env endpoint, environmental variables of the application can be set. spring.datasource.hikari.connection-test-query to run arbitrary queries once this functionality is triggered. In the worst case, this can be used to run Java in the H2 Database Engine. In the best case, arbitrary queries can be executed. tinycheck/tinycheck. This opens up the attack surface significantly. Although this could be changed, nobody forces a change here.