Information Security Lab: Binary Exploitation

4.61 / 5 rating4.22 / 5 difficulty28.57 hrs / week

Quick Facts and Resources

Something missing or incorrect? Tell us more.

Name
Information Security Lab: Binary Exploitation
Listed As
CS-6265
Credit Hours
3
Available to
CS and CY students
Description
This course covers advanced techniques for writing exploits, taught through an intense, hands-on security laboratory, following a cyberspace war game called Capture-The-Flag.
Syllabus
Syllabus
  • bOPQOXqs5ggIj1uXZmTCZg==2023-12-19T16:41:19Zsummer 2023

    OMSCS candidate, under grad in CS, played CTF in college. Not bad if you’re already familiar with basic binary exploration, only need to solve 5 challenges a week to get an A, I did them all on Sundays.

    Rating: 5 / 5Difficulty: 2 / 5Workload: 8 hours / week

  • 4VkOWx7MmvvmZwkUFZsQIg==2023-02-26T19:32:19Zspring 2023

    Definitely a great course. The lab setups are hard but gradually. You will learn a lot of details for pwn here

    Rating: 5 / 5Difficulty: 5 / 5Workload: 30 hours / week

  • 6N3jKejigmZPqZ6eOQcVEw==2022-08-18T01:16:00Zsummer 2022

    Very good introduction to the technics capturing the flags by controlling the pointers inside the runtime program remotely or locally. It's the best way to learn how computer program works under the hood! I learnt great amount, stayed very focused for extensive period of time cracking the code, and got so much satisfaction when seeing the flag popped on my terminal. Hours: The CTF competition is quite fierce and cost me spending 40 hours per week at the first to get near the top. But life happens and I needed to shift the focus and spent around 5-10 hours per week on the assignments in the end. I did get an A at the end. Background: 4yoe SWE with 0 security background.

    Rating: 5 / 5Difficulty: 4 / 5Workload: 22 hours / week

  • Georgia Tech Student2022-04-27T19:00:11Zspring 2022

    If I had 3 suggestions for anyone taking this class:

    1. Know x86/amd64 assembly beforehand
    2. Be familiar with debugging (pwndbg/GEF, and Ghidra)
    3. Be cozy with C and Python

    This is rated the hardest course in OMS-OCY, it's a great class full of practical challenges. I didn't have any exploit development experience beforehand, doing some online CTFs before taking this class would have helped me prepare better. I spent roughly 40-60 hours a week on this class with the videos, readings, and lab. There will be times your mind draws a blank when your exploit isn't working, and times you're surprised an idea actually worked. It's all worth it once that sweet flag pops on your screen. Use their recommended Ubuntu VM so it's similar to the server environment if you can't SSH in, I usually did all my work on the server. Definitely front load in this class, so clear your schedule and dedicate all free time to the first two labs so that your pockets are full of points; things start getting tough after lab 4. The hints can be hit or miss, some of them are free while others cost a penalty. The TAs are awesome, they responded quickly and thoroughly.

    Rating: 5 / 5Difficulty: 5 / 5Workload: 60 hours / week

  • Georgia Tech Student2022-04-25T23:35:44Zspring 2022

    Like it

    Rating: 5 / 5Difficulty: 4 / 5Workload: 25 hours / week

  • Georgia Tech Student2022-04-25T05:25:32Zspring 2022

    removed

    Rating: 5 / 5Difficulty: 1 / 5Workload: 1 hours / week

  • Georgia Tech Student2021-12-16T10:28:41Zfall 2021

    I took this as an OMSCS student as my final class. It is one of my favorite classes now. It's incredibly well designed and is pure hands on and lab based. I learned more in this class about OS architecture than ios/aos/hpca combined. It forces you to understand the low level details of the systems you exploit in a way that none of the more theoretical classes can do.

    If you take it in Fall you get to work on the NSA codebreaker challenge. Otherwise you do a fuzzing lab for for lab 10 (which I sort of regret not being able to do - I didn't like the NSA lab that much).

    There is an optional 24 hour CTF team challenge at the end of the semester, where you compete against other teams both on campus and online to take a 1000$ prize. Every team submits their own CTFs and you solve the challenges. This was actually really awesome and I'm glad I participated.

    This is one of the best courses in the program and I highly recommend it.

    Rating: 5 / 5Difficulty: 5 / 5Workload: 20 hours / week

  • Georgia Tech Student2021-12-07T17:21:20Zfall 2021

    This is definitely a YMMV course. If you have any experience doing reverse engineering or CTF events then you might be on the lower end of hours spent per week, if this is all new, expect to spend a lot of time each week working on this. I personally had some modest exposure beforehand, couple that with me being near the end of my degree I was fine settling for a B, and as such I spent about 10-15 hours a week to get the bare minimum for the grade done. I will say at the start of the semester I snagged as many flags as I could to allow me more slack near the end of the semester when things get more complicated - so definitely give it your all for the first 2 labs, these will be the easiest labs to load up on flags!

    I would also recommend taking this in the Fall semester, this appears to line up with the NSA Code Breaker Challenge and the final lab in the course becomes that instead of the in house GATech one. Plus NSA Codebreaker starts in the summer so you technically can work it over the entire semester. Double plus, NSA CBC is a lot more interesting and fun then the standard course labs imo, there's a whole narrative and context to the challenge.

    I really, really enjoyed this class, by far the most valuable course in this program in my opinion, but its tough, and draining. I'm 80 points away from an A, I just need 2 flags from the NSA challenge and I could have an A before the semester ends in 2 days, but will I? ehhh, who knows. That's the thing though, this course can be daunting, and frustrating, and I've seen plenty of people on our communication channels mention burnout (I know I am), but its very rewarding. So if you're looking to take this course consider my YMMV up above, and maybe consider taking it solo, I did, and looking back I couldn't imagine the hell my life would be if I took this course and another in the same semester with a full time job.

    The rest of the reviews for this course cover the mechanics, so I'll gloss over it real quick. For Fall 2021 online not on campus: 9 GATech labs + NSA Code Breaker Challenge that acted as lab 10, so 10 labs total, each lab has 10 flags, so 100 flags total. The one week labs had 1 tutorial and the 2 week labs had 2 tutorials. Tutorials are mandatory. To get a B you had to average 4 flags per lab (or 40 overall), an A was 5 flags (50 overall). There was also an extra credit CTF event the week before the end of the semester that is worth as much as 1 full lab should you solve enough challenges, my team got 100 points for modest effort.

    Rating: 5 / 5Difficulty: 5 / 5Workload: 15 hours / week

  • Georgia Tech Student2021-11-02T05:51:32Zsummer 2021

    This class takes serious time, far more than any other class in the program. Totally fun, but time consuming. I'm very glad I chose to take this class (it was optional for me).

    This course covers application attacks, and focuses on debugging assembly/stack memory/heap memory and other binary exploitation attacks to take control of an application. The course starts with common buffer overflows as the starting topic as I recall.

    It's effectively a semester long CTF with a new series of challenges each week. Challenges are of increasing difficulty. You'll have clearly explained point targets at the start of the semester which decides your grade. You get points for every challenge completed; it's not required/expected to complete all challenges to get an A. As the instructor to share challenge completion metrics from prior semesters to get an idea.

    PROTIP: Go hard at the start of the semester to build points... challenges aren't getting any easier later in the semester.

    Rating: 5 / 5Difficulty: 5 / 5Workload: 35 hours / week

  • Georgia Tech Student2021-08-14T14:40:55Zsummer 2021

    If you have ever done a CTF competition before this will be a straightforward class. It was an awesome refresher on some concepts and would be a great way to get someone started in the CTF world. If you have previous experience, probably don't take the summer offering.

    That being said I can see how this would be difficult for someone coming in with no experience. Skills good to have going in:

    • Reverse Engineering: (Assembly, IDA, Ghidra)
    • Basic Binary Exploitation: (Buffer overflows, ROP chains, fmt strings)
    • Basic Python Scripting: (familiarity with pwntools removes a lot of barriers)

    In the summer semester, to get an A in the class, you basically just need to do all the first two week's problems (basic buffer overflows) then follow the tutorials for the rest of the course.

    In all I enjoyed the class because I love CTFs and that's my background. Admittedly I did have some last minute, midnight submissions trying to get my stack to align correctly... I had fun and recommend it. Just know what you're getting into. If you have experience with CTFs you probably won't be learning a ton of new concepts but it's a good excuse to practice..

    I think there's room in the curriculum for some more advanced topics I would really like to see this course doesn't cover.

    • Source code auditing
    • Fuzzing techniques and concepts
    • Web browser vulnerabilities and exploitation
    • Bypassing modern exploit mitigation (Sandboxes, privilege escalations, etc)

    I think because I took the summer offering I missed out on some of the more advanced topics in the course.

    Rating: 4 / 5Difficulty: 2 / 5Workload: 5 hours / week

  • Georgia Tech Student2021-05-05T19:08:44Zspring 2021

    Far and away the most difficult course of the OCY curriculum. It's not even close.

    For the first half of the course, 50-60 hours/week is a decent estimate. I spent at least that for the first few labs as I picked up on RE and got used to the tools. The time commitment is extreme compared to the other courses in the OCY pipeline, and without a solid background in writing assembly and RE, it can be a beast.

    That said, the TA's are very helpful, and your classmates are a great resource as well. Put in the time and ask lots of questions. Expect that this class will consume an inordinate amount of time, but if you stick with it, the minimum for passing is doable.

    Good luck!

    Rating: 4 / 5Difficulty: 5 / 5Workload: 60 hours / week

  • Georgia Tech Student2021-04-21T16:13:01Zspring 2021

    This class was the most challenging course of my OCY program (so far) in terms of topic, pace, and hours logged. That said, I learned more in this class than any other and felt the most accomplished after I completed it.

    Going into this class, I had read that some people spent more than 50 hours per week on it. I thought surely that must be an exaggeration. But it was not. I easily spent that amount of time on it. Those hours were both intensely frustrating (when it seemed like I made no progress) and extremely rewarding (when I finally saw the vulnerability that led to exploitation). There were many late night one-person dance parties when the flag popped onto the screen.

    I will echo previous suggestions:

    • Load up on early labs, get as many of those flags as you can. It will allow you to have a little flex/float in later labs if you get stuck.
    • Master the tools and concepts from the early labs. Even if you can brute force a flag, make sure you learn to do things the elegant/programmatic way as well. These will be helpful later on as labs build on earlier concepts/tools (this is an extremely well thought out course)
    • Burn out is real! If this happens, give yourself some space/days off. You will come back with a clear mind.
    • Don't get discouraged if you can't get all the flags or don't get them quickly. Professor and TAs do not expect you to get 100% to get an A.
    • Stay active on Mattermost with your classmates. So many nudges, hints and encouragement are offered. Sometimes even knowing what others have done that does NOT work can help you progress.
    • And last but definitely not least: make sure you attend Office Hours. The Professor and TAs are so generous with their time. Sometimes if you have trouble with a concept, they can help explain those to you in a different way from the videos. Sometimes other students are having the same problems you are. After attending Office Hours I was always energized and ready to go again.

    Overall, a great course (required for OCY). Not sure if I will be able to use it in my day-to-day job so my skills will erode over time, but so glad I did the work and have that base knowledge now.

    Rating: 5 / 5Difficulty: 5 / 5Workload: 50 hours / week

  • Georgia Tech Student2021-04-20T11:07:18Zspring 2021

    Yes, this is definitely the most challenging and time-consuming course in the OCY program. But it was also the most fun and the one in which I’ve learned the most.

    Our TA’s were Mingyi Liu and Jungwon Lim. They’re extraordinarily brilliant and so generous with their time.

    The other reviews already mention the structure of this class so I’ll just give you some advice…

    If you want to succeed in this class, you must master lessons from the earlier labs. Each lab gets progressively more difficult and builds on top of previous ones. Start strong and try to solve all challenges in the first few labs. A lot of the learning comes through struggling through the challenges. Attend the office hours and get guidance on things you’re completely stuck on.

    If you work hard, there’s no reason you cannot achieve an A in this class.

    Rating: 5 / 5Difficulty: 5 / 5Workload: 50 hours / week

  • Georgia Tech Student2021-01-14T03:48:15Zfall 2020

    Best class I've taken so far in OMSCS. The course is pretty small and mixed with on-campus students. Professor is super engaged and there were several optional synchronous tutorials every week.

    You are given 11 challenges every 1-2 weeks. For OMSCS, completing 5 challenges is an A on the lab with any additional challenges going to extra credit.

    Solving the first two to three challenges is not too bad if you follow the tutorial and do some research on the problem but things just ramp up from there. I really recommend grinding out as many challenges as you can early in the course so you have leeway later on if you are burnt out. There is an extra credit CTF at the end of the class which is super fun.

    I highly recommend taking this class. It is hard but incredibly rewarding.

    Rating: 5 / 5Difficulty: 5 / 5Workload: 30 hours / week

  • Georgia Tech Student2020-11-19T08:32:42Zfall 2020

    This class was by far the most challenging class I have taken at Georgia Tech so far. Prior to this class I never have done reverse engineering and exploitation so that may account for the 45-50+ hours a week investment. The professor and TA’s are awesome and always trying to improve the class. I highly suggest solving as many challenges in the beginning as they only get harder each week. I will append to this review at the end of the semester.

    Rating: 5 / 5Difficulty: 5 / 5Workload: 45 hours / week

  • Georgia Tech Student2020-09-20T18:45:10Zfall 2019

    This is one of those classes like the others mentioned in which you get the amount of knowledge proportional to the amount of effort you put in. There are roughly 10 challenges (including 2 tutorials) posted each week. The TAs are pretty amazing in their knowledge of the subject and few of them have actually won the CTF at DefCon. This is not a class where they will walk you through the problems, but, instead, they want you to think and come up with a solution by yourself after going through the tutorials with them. Of course the discussion on piazza and slack helps a lot and there is probably no info sec course on the internet that will help you through binary reverse engineering like this course does. Of course, you level of time spent on the assignments will be huge but you will learn a ton too. I would highly recommend taking this class if you are interested in binary reverse engineering.

    Rating: 5 / 5Difficulty: 4 / 5Workload: 30 hours / week

  • Georgia Tech Student2020-07-31T04:06:02Zsummer 2020

    The average workload is pretty accurate. This was a very time consuming class for me, but I really enjoyed it. No Exams, no Quizzes, all flags. The class is a giant CTF ranging from remote exploitation to ROP chains. You don't need to be an expert in assembly/gdb/binary exploitation but be prepared to get real good real fast.

    Advice: Any lab that you get on a roll and really understand what's going on try to get all the flags as it'll put you ahead for the next week

    Rating: 4 / 5Difficulty: 4 / 5Workload: 23 hours / week

  • Georgia Tech Student2020-04-29T11:18:04Zspring 2020

    As others have stated, this is a tough and time consuming class. I really enjoyed it. You will get what you put in. If you're interested in this type of course do it when you will have enough time to dedicate to it. The lecture videos are very short and not comprehensive - intentionally so. There's plenty of external links to resources provided with more then enough info to teach your self.

    The class is structured as a semester long CTF. Each of the 10 labs has roughly 10 problems/flags for you to find. Some can be found quickly. Most will take several hours of work per flag. Some took all day ~8 hours for me to find.

    The professor was responsive to reasonable requests on piazza about shifting due dates in order to allow students more time to work on the assignments.

    Rating: 5 / 5Difficulty: 5 / 5Workload: 20 hours / week

  • Georgia Tech Student2020-04-28T16:55:40Zspring 2020

    tl;dr - this is a hacker CTF class. If that sounds like fun, you'll enjoy the class. If you don't know what that is, you will likely have a hard time full of learning.

    Me: Graduate this semester w/ 3.5. I do software dev for a living, but have a strong background in security as well, having done a number of hacking challenges/CTFs(but not necessarily done well).

    My thoughts on this class: One of the best class I've taken. TA's and instructor are responsive and willing to be flexible. If you're familiar with CTFs or have written a ROP chain, this class will be fun and an "easy" pass, maybe even an A. If you're not comfortable exploiting a buffer overflow, this class will be harder than Algorithms.

    Course layout: As mentioned in other reviews, there's maybe 10 minutes of lecture a week that introduces a security flaw and how to get past it. Then there's 1-2 tutorials that walk you through most of an exploit, and 10 challenges. The challenges get progressively hard, with at least ~1-3 being within reach of most everyone. The challenges also get harder every week as more complex topics are covered. Expect to spend ~1-4 hours per challenge at least, more if you're unfamiliar with the topics, and more as the challenges get harder. There is very little direction - you can ask questions in piazza, and TAs/the instructor do a good job responding, but you're largely expected to figure it out on your own.

    Grading: You get a grade for the overall class, not challenges, based on a point score. Every challenge is worth 20 points the week it's assigned, and then 10 points the next week. An A averages out to all tutorials + 5 challenges, a B is all tutorials + 4 challenges, a C is all tutorials + 3 challenges. As long as you solve all the tutorials, you will not fail. Note, this means that you do not need to complete all the challenges for good grade, and you can frontload points on easier labs to give yourself a buffer on harder challenges (ex: 8 challenges wk 1, 2 challenges wk 2, average of 5, and therefor an A).

    Suggested skills going into the course:

    • A strong grasp on assembly
    • Reverse engineering experience (Ida, Ghidra, etc)
    • Python (the pwntools library is used heavily, though not required)
    • Ability to research topics on your own a la "Try Harder(tm)"

    Rating: 5 / 5Difficulty: 4 / 5Workload: 25 hours / week

  • Georgia Tech Student2019-11-25T16:09:54Zfall 2019

    Note: the "30 hours/week" workload is a wild guess. I am terrible at tracking and even estimating that kind of thing.

    This has been one of my favorite classes in the program. It was my last class, and while it was a fun way to end the program, I wish I'd been able to take it earlier so I could pivot to the Cybersecurity masters, if this is any indicator of the kind of content there.

    As you might guess from other reviews, the prerequisites are no joke. The course website mentions "Operating systems or equivalent (e.g., CS 3210 at GT)." -- GIOS (CS-6200) IS NOT SUFFICIENT (honestly I'm not really sure if there is an OMSCS class that is). If you look at the course syllabus for CS 3210, it covers x86 assembly, which CS-6200 doesn't touch.

    You need some familiarity with assembly. The very first lab in the course is about getting familiar with some of the tools you'll be using (mainly gdb) and figuring out what programs are doing from their disassembly. A bit later in the course (lab 3 or so) you'll also be writing your own assembly. If you've never dealt with any kind of assembly, you'll probably feel drowned and never quite recover.

    I say "any kind of assembly" because, for what it's worth, I had never done any x86 asm. But I have used MIPS and PIC, so I was at least familiar with how asm usually works.

    The teaching style also may not be everyone's cup of tea, but for this kind of material it's a little hard to imagine another method working. This course is about breaking systems, and using them in unintended ways to gain some benefit. You really need to dig into it yourself, and see what works and what doesn't, and more importantly why. If you are spoonfed a method of exploitation, you're more likely to struggle to adapt that method in places where it doesn't work quite right. Also, the TAs are very available for support; make use of them.

    The course is set up as a big competition. Solving a problem gives you points, and being the first or second to solve gives you some bonus points. If you're very competitive (like me), this can be both boon and bane. I spent a lot of time on the course because of the scoreboard, which also meant I was learning a lot, but I got pretty burned out by the end. However, the bar for passing (and even getting an A) is reasonable, and you don't need to be near the top of the scoreboard.

    All in all, highly recommend the class. Also highly recommend taking it without any other classes so you have time to really dig into the material.

    Rating: 5 / 5Difficulty: 4 / 5Workload: 30 hours / week

  • Georgia Tech Student2019-10-14T00:06:53Zfall 2019

    This is my first review of any courses for this website, although this is the 7th course I've taken in the OMSCS program. A little about my background. I have an undergrad in CS and work currently doing software and network engineering. I took the IIS course previously and found the projects fun, but the lectures and material dry. I decided to give CS6265 a try because I enjoyed the projects so interesting in IIS.

    Unfortunately it was a huge mistake to take this course. As a previous post mentioned, prior to to doing a lab, you get a 5-7 min intro video and then are on your own to try and figure things out. I feel very capable using a debugger and walking to through assembly code, but this course requires the knowledge of how to do binary patching and use tools like Ghidra or Cutter. I ended up dropping the course 4 weeks in due to the fact I was spending 35+ hours per week trying to figure the labs out. I know with online courses their is going to be a certain amount of self learning, but this is by far the worst course I've taken in terms of explaining concepts/material. I don't think the labs would be extremely difficult if the course literally had any material besides these lab intro videos.

    tl;dr This course lacks the necessary material to complete the lab assignments. I spent most of the time teaching myself how to use the tools and the theory needed to complete the assignment. Avoid this class unless you have a strong background in binary exploitation.

    Rating: 2 / 5Difficulty: 5 / 5Workload: 35 hours / week

  • Georgia Tech Student2019-09-24T20:57:53Zfall 2019

    Whoever wrote the first review to this class totally deceived me. It is NOT an 8 hour a week class. This course is a nightmare for an online class, a total shitshow. There are 10 weekly "labs" which make you think they are more like homeworks, but in reality each weekly lab runs well over 20+ hours. The learning curve is ridiculous, the amount of tools you need to know, computer architecture, reading and writing assembly code.

    The material itself is super interesting, but do not expect ANY instruction. The weekly lectures are 7 minutes long LOL. The lecture is totally high level and doesnt show you how to do anything. There are weekly "tutorials" that are anything but. The tutorial doesnt walk you through, or step by step anything, it is just another challenge you have to solve and fill in the gaps. Many students spent hours and hours even just trying to solve the tutorial. The on campus class meets 3 hours a week and so shares a lot more information with each other. We have "recitations" where you can come and ask questions, but unless you are able to frequently make those in person (and how many online part time students can?) you are kinda out of luck when you get stuck. Unless you have kind class mates who share information with you on slack.

    I regret being the guinea pig for this online class. it is by far the most time I have spent on any class, and I was interesting in the material, but the professor and instructions are nonexistent. Might as well go self study something.

    Rating: 3 / 5Difficulty: 5 / 5Workload: 30 hours / week

  • Georgia Tech Student2019-08-06T23:39:39Zfall 2019

    The course was fun and exciting

    Rating: 4 / 5Difficulty: 3 / 5Workload: 8 hours / week