Phone:

+(886) 909 756 966

Email:
moneychien20639@gmail.com

© 2024 Yu-Hang

Course:

Introduction to Computer Systems (15-513)

Time Spent:

20 hours

Source Code:
to github

Attack Lab

The Attack Lab was divided into five phases, each focusing on different aspects of security exploits, from basic code injection to advanced return-oriented programming (ROP). The goal was to understand how attackers exploit weaknesses in software and to gain the skills necessary to write more secure code. Below I will describe the puzzles and the technical skills and tools I've utilized.

Code Injection Attacks:

  • Phase 1: Redirected program execution to an existing function (touch1) by manipulating the return address on the stack.
  • Phase 2: Injected code to call another function (touch2) with a specific argument, modifying the stack to pass the correct value.
  • Phase 3: Injected code to call a third function (touch3) with a string argument, ensuring the string was correctly placed on the stack.

Return-Oriented Programming (ROP):

  • Phase 4: Used gadgets (existing instruction sequences ending in ret) from the program’s code to replicate the Phase 2 attack without injecting new code.
  • Phase 5: Performed a complex ROP attack to call touch3 with a string argument, using a sequence of gadgets to manipulate the stack and registers.

Completing the Attack Lab has equipped me with a solid foundation in cybersecurity and low-level programming. The skills and knowledge I gained are essential for identifying and mitigating security vulnerabilities in software. This experience not only strengthened my technical abilities but also underscored the importance of writing secure and reliable code.


  • Cybersecurity
  • Buffer Overflow Exploits
  • Code Injection
  • Return-Oriented Programming (ROP)
  • x86-64 Machine Code
  • Stack Manipulation
  • Programming Security
  • Assembly Language