Dates
Assigned:
August 23, 2022 at 1:00pm (Arizona time)
(solves before this date will not appear on the default scoreboard)
Due:
August 30, 2022 at 11:00am UTC-07:00 (Arizona time)
(after this date, the live session of the dojo will move on to the next module, though solves will still count for scoreboard ranking)
For ASU extra credit due dates, please log in with an @asu.edu
email address.
Lectures and Reading
- For launching programs from Python, we recommend using pwntools, but subprocess should work as well. If you are not using one of these two, you will suffer heavily when you get to input redirection (for that, check out the
stdin
and stdout
arguments to pwn.process
or subprocess.Popen
).
- For reading and writing directly to file descriptors in bash, check out the
read
and echo
builtins.
- You will find the
env
command useful, and the exec
bash builtin.
- Quick refreshers on
fork()
versus exec*()
here and here and here.
- Remember to
wait()
on your children! If you use subprocess.Popen
, pwn.process
, or good old fork()
, your parent will keep executing and, unless it waits for the child in some way, will just terminate! This is almost never what you want.
- Some documentation on networking in C.
- Useful resource for pipes in C.
- Useful resource for FIFOs in C.
- A treatise on I/O redirection in Linux shells, which has applications in this assignment: https://bencane.com/2012/04/16/unix-shell-the-art-of-io-redirection/
- A guide on Linux symbolic links. https://www.nixtutor.com/freebsd/understanding-symbolic-links/
- A video tutorial on FIFOs in C.
- A great visual guide to I/O redirection in Linux.
- An incredible pwntools cheatsheet by a pwn.college student!
The following live sessions belong to this module.
Challenges
Module Ranking
This scoreboard reflects solves for challenges in this module after the module launched in this dojo.