64-bit shellcoding and introduction to buffer overflow exploitation on Linux
2019-05-16, 13:30–16:30, Workshop 1

64-bit shellcoding and introduction to buffer overflow exploitation on Linux is a 3h workshop with a fast paced introduction to x86-64 architecture, assembly language and tooling.


64-bit shellcoding and introduction to buffer overflow exploitation on Linux is a 3 hour workshop which is essentially divided into 3 parts:

  • Introduction to 64-bit architecture in order to get familiar with registers, stack, calling conventions described in the Intel 64 (x86-64) architecture manual and the most common assembly instructions and syscalls which we will later use to write our shellcodes.

  • Shellcoding where we try different techniques to write the shellcode and of course you gonna get to greet the shellcoding world with your own Hello World shellcode in addition to reverse shell which we will use later on in part 3

  • Introduction to buffer overflows, so you can put your newly received know-how about stack into practise right away. Shellcode without being used is a wasted shellcode! Part 3 ends with a buffer overflow challenge where your goal is to use your reverse shellcode to get a connection back to your machine.

Keywords:

  • we will get to use command line tools like nasm, objdump, ld, ausyscall, and gdb
  • we will learn how to find global and local variables using gdb and identify the corresponding sections; navigating in functions and examining memory in gdb;
  • we will learn the basics of assembly language instructions and how to write your own assembly programs
    get familiar with the basics of x86-64 architecture
  • using syscalls in shellcoding
  • JMP technique when writing shellcode
  • introduction to stack based buffer overflows

Participants are expected to either build their own Ubuntu 16.04 VM-s per given instructions or simply download the ready made machine provided for them and import it to Virtualbox.