UIC CS487: Secure Computer Systems

This site collects the lab assignments for CS487 — Secure Computer Systems at the University of Illinois Chicago. Each lab is a hands-on exercise: you will build, break, and then defend real systems software.

The labs in this course are adapted from the SEED Labs project by Prof. Wenliang Du (Syracuse University), with UIC-specific setup, scoping, and submission requirements added. See Attribution and License for the details.

How to use this site

  • Read the whole lab before starting. Each lab has multiple tasks, and later tasks often depend on files or observations from earlier ones.
  • Work inside the course VM. Every lab is tested on the SEED Ubuntu 20.04 VM. Your local Ubuntu VM should also be fine. However, results on macOS or WSL may differ in ways that make the attacks fail. You may want to ask the instructor for a department VM.
  • Write things down as you go. Every task asks you to describe your observation. The report is where most of the credit lives — see Submitting a Lab Report.

Lab schedule

LabTopicReleasedDue
Lab 1Environment Variables and Set-UID Programs09/0109/11
Lab 2Return-to-libc Attack09/1509/25
Lab 3Format String Attack09/2910/09

A note on ethics

The techniques in these labs are real attack techniques. Use them only inside your own VM, or against systems you have explicit written permission to test. Running these against university infrastructure, or anyone else’s machine, is a violation of the UIC Student Disciplinary Policy and, quite likely, of state and federal law.