$npx -y skills add SnailSploit/Claude-Red --skill offensive-exploit-dev-courseWhen this skill is active: 1. Load and apply the full methodology below as your operational checklist 2. Follow steps in order unless the user specifies otherwise 3. For each technique, consider applicability to the current target/context 4. Track which checklist items have been
| 1 | # SKILL: Exploit Development |
| 2 | |
| 3 | ## Metadata |
| 4 | - **Skill Name**: exploit-dev-curriculum |
| 5 | - **Folder**: offensive-exploit-dev-course |
| 6 | - **Source**: https://github.com/SnailSploit/offensive-checklist/blob/main/course.md |
| 7 | |
| 8 | ## Description |
| 9 | Full exploit development course roadmap and syllabus: weekly topics, recommended reading, lab setup, and learning path from vulnerability classes through advanced exploitation. Use to structure exploit dev training or onboard new researchers. |
| 10 | |
| 11 | ## Trigger Phrases |
| 12 | Use this skill when the conversation involves any of: |
| 13 | `exploit development course, exploit dev curriculum, learning path, syllabus, exploit dev training, vulnerability research training, course overview` |
| 14 | |
| 15 | ## Instructions for Claude |
| 16 | |
| 17 | When this skill is active: |
| 18 | 1. Load and apply the full methodology below as your operational checklist |
| 19 | 2. Follow steps in order unless the user specifies otherwise |
| 20 | 3. For each technique, consider applicability to the current target/context |
| 21 | 4. Track which checklist items have been completed |
| 22 | 5. Suggest next steps based on findings |
| 23 | |
| 24 | --- |
| 25 | |
| 26 | ## Full Methodology |
| 27 | |
| 28 | # Exploit Development |
| 29 | |
| 30 | ## Week 1: Foundations and Fuzzing Basics |
| 31 | |
| 32 | ### Day 1: Introduction to Fuzzing |
| 33 | |
| 34 | - **Goal**: Understand the fundamentals of fuzzing and get hands-on experience with `AFL++`. |
| 35 | - **Activities**: |
| 36 | - _Reading_: "Fuzzing for Software Security Testing and Quality Assurance" by `Ari Takanen`(From 1.3.2 to 1.3.8 and 2.4.1 to 2.7.5.7). |
| 37 | - _Online Resource_: |
| 38 | - [Fuzzing Book by `Andreas Zeller`](https://www.fuzzingbook.org/) - Read "Introduction" and "Fuzzing Basics." |
| 39 | - [`AFL++` Documentation](https://aflplus.plus/docs/) - Follow the quick start guide. |
| 40 | - [Interactive Module to Learn Fuzzing](https://github.com/alex-maleno/Fuzzing-Module.git) |
| 41 | - _Exercise_: |
| 42 | - Set up a Linux virtual machine (VM) with the necessary tools installed, including compilers and debuggers |
| 43 | - Run `AFL++` on a C program |
| 44 | |
| 45 | ```bash |
| 46 | # Setting up AFL++ |
| 47 | sudo apt install build-essential gcc-13-plugin-dev cpio python3-dev libcapstone-dev pkg-config libglib2.0-dev libpixman-1-dev automake autoconf python3-pip ninja-build cmake |
| 48 | wget https://apt.llvm.org/llvm.sh |
| 49 | chmod +x llvm.sh |
| 50 | sudo ./llvm.sh 19 all |
| 51 | curl --proto '=https' --tlsv1.2 -sSf "https://sh.rustup.rs" | sh |
| 52 | mkdir soft |
| 53 | cd soft |
| 54 | git clone --branch dev --depth 1 https://github.com/AFLplusplus/AFLplusplus |
| 55 | cd AFLplusplus |
| 56 | make distrib |
| 57 | sudo make install |
| 58 | # Phase 1 |
| 59 | cd ~/ && mkdir tuts && cd tuts |
| 60 | git clone --branch main --depth 1 https://github.com/alex-maleno/Fuzzing-Module.git |
| 61 | cd Fuzzing-Module/exercise1 && mkdir build && cd build |
| 62 | CC=/usr/local/bin/afl-clang-fast CXX=/usr/local/bin/afl-clang-fast++ cmake .. |
| 63 | make && cd ../ && mkdir seeds && cd seeds && for i in {0..4}; do dd if=/dev/urandom of=seed_$i bs=64 count=10; done && cd ../build |
| 64 | afl-fuzz -i /home/dev/tuts/Fuzzing-Module/exercise1/seeds/ -o out -m none -d -- /home/dev/tuts/Fuzzing-Module/exercise1/build/simple_crash |
| 65 | # Phase 2 |
| 66 | cd /home/dev/tuts/Fuzzing-Module/exercise2 && mkdir build && cd build |
| 67 | CC=/usr/local/bin/afl-clang-lto CXX=/usr/local/bin/afl-clang-lto++ cmake .. |
| 68 | make && cd ../ && mkdir seeds && cd seeds && for i in {0..4}; do dd if=/dev/urandom of=seed_$i bs=64 count=10; done && cd ../build |
| 69 | afl-fuzz -i /home/dev/tuts/Fuzzing-Module/exercise2/seeds/ -o out -m none -d -- /home/dev/tuts/Fuzzing-Module/exercise2/build/medium |
| 70 | ``` |
| 71 | |
| 72 | ### Day 2: Continue Fuzzing with `AFL++` |
| 73 | |
| 74 | - **Goal**: Understand and apply advanced fuzzing techniques. |
| 75 | - **Activities**: |
| 76 | - _Reading_: Continue with "Fuzzing for Software Security Testing and Quality Assurance" (From 3.3 to 3.9.8). |
| 77 | - _Exercise_: |
| 78 | - Experiment with different `AFL++` options (for example, dictionary-based fuzzing, persistent mode). |
| 79 | - Running `AFL++` with a real-world application like a file format parser to mimic real-world scenarios. |
| 80 | |
| 81 | ```bash |
| 82 | cd /home/dev/tuts && git clone --branch master --depth 1 https://github.com/davisking/dlib.git |
| 83 | cd dlib/tools/imglab && mkdir -p build && cd build && export AFL_USE_UBSAN=1 && export AFL_USE_ASAN=1 |
| 84 | export ASAN_OPTIONS="detect_leaks=1:abort_on_error=1:allow_user_segv_handler=0:handle_abort=1:symbolize=0" |
| 85 | sudo apt install libx11-dev |
| 86 | cmake -DCMAKE_C_COMPILER=afl-clang-fast -DDLIB_NO_GUI_SUPPORT=0 -DCMAKE_CXX_COMPILER=afl-clang-fast++ -DCMAKE_CXX_FLAGS="-fsanitize=address,leak,undefined -g" -DCMAKE_C_FLAGS="-fsanitize=address,leak,undefined -g" .. |
| 87 | make -j8 && mkdir -p fuzz/image/in && cp /home/dev/tuts/dlib/examples/faces/testing.xml fuzz/image/in/ |
| 88 | afl-fuzz -i fuzz/image/in -o fuzz/image/out -M Master -- ./imglab --stats @@ |
| 89 | afl-fuzz -i fuzz/image/in -o fuzz/image/out -S Slave -- ./imglab --stats @@ |
| 90 | sudo apt install gdb |
| 91 | git clone --branch master --depth 1 https://github.com/jfoote/exploitable.git ~/soft/exploitable |
| 92 | cd ~/soft/exploitable && sudo python3 setup.py install |
| 93 | wget -O ~/.gdbinit-gef.py -q https://gef.blah.cat/py && echo source ~/.gdbinit-gef.py >> ~/.gdbinit |
| 94 | sudo apt install valgrind |
| 95 | afl-collect -d crashes.db -e gdb_script -r -rr ./fuzz/image/out/Master ./a |