sajjadium/ctf-archives: A Catalog of CTF Events and Writeups
CTF Archives: Collection of CTF Challenges.
At a glance
- What is it?
- sajjadium/ctf-archives is a Python-labeled repository organized as an index of CTF events, yearly challenge directories, and links to CTFtime or other writeups. It is useful as a browsing reference, not as a documented challenge-solving application.
- Who is it for?
- Adopt this repository as a lightweight reference index if you want to browse event collections and reach linked CTFtime task pages or writeups. Do not treat it as a ready-made CTF platform, because the README documents no executable workflow or local challenge service.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 6 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 7, 2026, and from our analysis. They are not legal advice.
Star history
- sajjadium/ctf-archives1,640 ★ · +24
| Repository | 2026-10-16 | 2026-11-07 |
|---|---|---|
| sajjadium/ctf-archives | 1.6k | 1.6k |
24 Stars in the last 22 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What ctf-archives indexes
sajjadium/ctf-archives solves an organization problem rather than a software problem. It presents a collection of CTF challenges from multiple competitions, with each event mapped to a path under `ctfs/` and a writeup or task link in the README. The visible entries include 07CTF, 0CTF, 0x41414141, 0xFUN, 0xL4ugh, 0xV01D, 24hCTF, 1337UP, 1753CTF, 3kCTF, 47CON, 4N0NYM0US3, 4TS, and ADDA. The entries span different years and, for some events, stages such as Quals or Finals.
This makes the repository most relevant to CTF participants who want to locate a previous event, compare challenges from several competitions, or follow a link to external task information. The README also points to an existing writeup repository for some 0CTF editions, including 2017 Quals, 2018 Quals, and 2018 Finals. That secondary source is useful because it suggests that the archive is intended to connect readers with more detailed material rather than contain every explanation itself.
The repository does not describe a command, library, service, or challenge runner. Its primary language is listed as Python, but the README excerpt is an index rather than Python usage documentation. A reader should therefore expect a directory-based catalog with external references. The repository is not presented as a substitute for a CTF platform that creates challenges, scores submissions, or hosts infrastructure.
How the event directory is structured
The visible architecture is a hierarchy built around `ctfs/`. For example, the README links to `ctfs/07CTF/2026`, `ctfs/0CTF/2025`, and `ctfs/0CTF/2021/Quals`. This pattern shows a contest name at one level, a year at the next level, and an optional competition phase where applicable. The root README acts as a table of contents with three conceptual columns: CTF, Event, and Writeups.
The writeup column does not always point to material inside this repository. Most visible entries link to a CTFtime task page. Some older 0CTF entries include both a CTFtime link and a link to `github.com/sajjadium/ctf-writeups`. The archive therefore separates browsing from explanation. The repository provides the event context, while CTFtime or a separate writeup repository supplies the task page or detailed solution material.
Based on the directory naming, a user can navigate from the root listing to an event folder and then to a year or phase. The README excerpt does not show the contents of those folders, so the exact file format inside an event directory cannot be confirmed. It would be inaccurate to claim that each folder contains source code, binaries, setup instructions, or a fixed set of files. The safe assumption is limited to what the links show: event-specific paths exist and are intended to organize the archive.
Browsing the archive for a first use
There is no installation or command-line tutorial in the README excerpt. The project is presented as a repository to visit and browse, so no package installation command can be copied from the documentation. A first use begins by locating an event in the README table and following its repository path or CTFtime link.
For a contest such as 07CTF, the README gives the event path `ctfs/07CTF/2026`. A reader can use that path as the starting point for inspecting the corresponding archive directory. For an event with external writeups, such as 0CTF 2018 Finals, the README links to `github.com/sajjadium/ctf-writeups/tree/master/0CTF/2018/Finals` in addition to the CTFtime task link. These links indicate two possible routes: inspect the event directory or consult the external writeup collection.
The README does not document how to run challenge files, configure dependencies, or reproduce a competition environment. It also does not specify whether local paths contain writeups, challenge assets, or both. Python being the primary language does not change that limitation. Before spending time on a particular event, check whether the target directory contains the files needed for the intended study exercise.
The external-link boundary
The archive depends heavily on links outside its repository. CTFtime supplies task pages for many listed events, and the separate `ctf-writeups` repository supplies additional writeups for selected 0CTF entries. This design keeps the central index compact, but it also means that the usefulness of an entry depends on the availability and organization of external material.
A CTFtime task page may describe the challenge, while a writeup may explain the intended solution. The README excerpt does not say whether either source contains downloads, source files, or only task metadata. It also does not promise that the links remain synchronized with changes in either external service. Users who need a self-contained copy should treat the repository as a directory of references and inspect each linked source individually.
This is different from maintaining a single local challenge bundle. An archive organized around event and year makes historical browsing straightforward, but it does not provide a documented common format for launching challenges. The absence of such instructions is a real constraint for users expecting a platform.
When the archive is the wrong tool
ctf-archives is the wrong tool when the goal is to solve a challenge immediately without locating external task pages or understanding the event structure. It does not document a local execution path, Python package, container setup, scoring service, or submission interface. A participant looking for a reproducible lab will need another source or additional setup instructions that are not present here.
The index is also less suitable than a dedicated writeup collection when the goal is one coherent explanation per challenge. The visible README is primarily a cross-event table, while the linked `ctf-writeups` repository is the place where some more detailed material is explicitly identified. Users who already know the event and want solution depth should follow that second repository rather than browse the main index indefinitely.
A further limitation is discoverability beyond the entries shown in the excerpt. The README is described as a large HTML-like table, but its formatting and the completeness of the visible excerpt do not establish search behavior, filtering, or an API. The repository offers no documented full-text search across task names. Searching through GitHub or CTFtime may therefore be necessary when the event name is not already known.
CTFtime as a different reference point
CTFtime is a real alternative for locating event task pages, and the README itself uses CTFtime as the main destination for many entries. The practical difference is scope. ctf-archives provides a repository-organized view of competitions and years, while CTFtime provides the external event and task pages referenced by that view. A reader who only needs the current task listing can follow the CTFtime link directly. A reader who wants the archive's event-oriented directory should start with `ctfs/`.
The separate `sajjadium/ctf-writeups` repository is another alternative for detailed solution reading, especially for the linked 0CTF paths. It changes the unit of navigation from the archive's event index to writeup content. Neither source replaces the other automatically: the main archive is useful for event discovery, CTFtime for linked task pages, and the writeup repository for selected explanations.
The repository is not archived, and its last push was on 2026-10-11. There are no GitHub releases, so the README and repository layout are the relevant basis for understanding how new entries are organized. The MIT license permits reuse under its terms, but users should inspect the actual license file for obligations and separately account for external CTFtime content or linked writeups.
Editorial conclusion
Adopt this repository as a lightweight reference index if you want to browse event collections and reach linked CTFtime task pages or writeups. Do not treat it as a ready-made CTF platform, because the README documents no executable workflow or local challenge service. Before relying on it, verify the repository structure for a specific event and confirm that its linked CTFtime pages and any external writeups remain available.
Frequently asked questions
How do I install sajjadium/ctf-archives?
The README excerpt does not provide installation or dependency commands. It is presented as a repository of event paths and external links, so use it by browsing the repository rather than installing a documented Python package.
Does sajjadium/ctf-archives include writeups?
The README links many entries to CTFtime and some 0CTF entries to the separate `sajjadium/ctf-writeups` repository. The excerpt does not establish that every event directory contains a full writeup.
How are CTF events organized in sajjadium/ctf-archives?
The visible paths use an event directory under `ctfs/`, followed by a year and sometimes a phase such as `Quals` or `Finals`. Examples include `ctfs/0CTF/2025` and `ctfs/0CTF/2021/Quals`.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/sajjadium-ctf-archives)Star history chart for your README
[](https://hysenlabs.com/projects/sajjadium-ctf-archives)Was this useful?