This course will explain the main types of software vulnerabilities. Students will learn how they work and how to find vulnerabilities in real applications. Also, they will learn how to use script languages and frameworks to automate bug finding. With this information, students will then be able to construct more secure applications.

Student Pre-requisite

Basic knowledge of assembly language and C ANSI

Software Requirement

Windbg, OllyDbg, Python

Hardware Requirement

Laptop computer

Course Outline

What is software vulnerability?

Types of vulnerabilities
  • Buffer overflows
  • Heap overflow
  • Format string bugs
  • Kernel bugs
  • Device driver bugs
Shellcodes How to develop exploits
  • Exploits in C
  • Exploit in Python
How to find vulnerabilities
  • Static analysis
  • Dynamic analysis
  • Fuzzing
  • Disassemblers
  • Debuggers
  • IDAPython
  • Paimei
  • Immunity Debugger
  • Network fuzzing
  • File fuzzing
  • Trace-based fuzzing

About Instructor

Edgar Barbosa is a security researcher in the Advanced Malware Lab (AML) of COSEINC. He was a member of the team within AML to develop "Blue Pill", a virtual machine rootkit, and has published several papers. Edgar is an expert in kernel and rootkit research.