Description
Trying to understand code execution vulnerabilities without understanding assembly is nonsense. We will start from scratch to learn assembly, going from no-assembly to understanding how buffer overflows, integer overflow and sign mistmatches work, what are the possibilities of their exploitation and hopefuly more.
The attendee will learn assembly, how to use a debugger, how to code small assembly programs and how to do basic exploits. There's no doubt he'll understand and learn to draw the stack (of utter importance for exploit writing), and if nothing else, what's more important, how to have lots of fun playing the ultimate game against other coders: how is it possible to make their programs do what YOU want.
During the course the student will invest a portion of his/her time working on the computer, solving exercises, and reinforcing all the new concepts and ideas. This way we'll focus on setting the cornerstone where he'll be able to build all his future knowledge on exploit writing. Not focusing on going too far, but rather going deeper.
The course will be heavily based on IA32 (x86) assembly.
You'll [hopefully] learn:
Assembly reading
Assembly writing (basics)
Debugging (in windows at least)
Reverse engeneering (basics)
Buffer overflows
Buffer overflows exploitation (some kinds)
Integer overflows
Sign-missmached comparisions
How C is compiled into assembly
Prerequisites
Basic C reading/understanding skills.
Good coding experience in any language. (C, perl, python, pascal, Smalltalk, any other)
Prerequisite material
A computer running Windows (2k or higher prefered)
Your language of choice installed (C compiler, perl or python interpreter, Smalltalk, any other)
OllyDbg installed (or we'll install it in the class)
Networking (you'll probably want to use our internet access)
You'll have to copy a few small files to your box (either network, CD or USB drive is fine)
Gray matter
Gerardo 'gera' Richarte
Gera is widely regarded as one of the world's most brilliant "shellcode ninjas" and responsible for countless innovations in technique. A short look at his famous "Insecure Programming by Example" page at the Insecure Programming site should convince you that he is about 31337 as you get. Gera is one of the technical wizards at Core Security Technologies.