{
  "fetched_at": "2026-10-19T15:39:08Z",
  "source_url": "https://www.kaggle.com/competitions/aiv-ctf-cactuscon/data",
  "pages": [
    {
      "name": "data-description",
      "content": "This CTF follows a different flow than Most Kaggle Competitions. Competitors will be interacting with API endpoints during each of the challenges. Upon successful completion of a challenge, that challenge will return a flag (a 128 character string). To update the scoreboard, competitors will submit a .csv containing all of their flags. You can do this by uploading a file with all of your flags. We've provided a template. Cumulative scores will be weighted based on the difficulty of the challenge. All competitors start at 0 and work their way towards a perfect score of 1.\n\n## Files\n- **sample_submission.csv -** a sample submission file in the correct format\n- Other files are used for specific challenges and referenced in the template notebook.\n## Columns\n- `challenge_id` - The challenge id (found in the markdown header)\n- `flag `- The case-sensitive flag",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "Help Henry Hacker stop the robot uprising -- Brought to you by the [AI Village](https://aivillage.org/)! In this series of challenges, you'll be interacting with various machine learning security challenges.\n\nThe competition will be live from January 27th to January 30th @ 12:00. If you're at CactusCon, stop by the village to chat about the competition. There's also the Kaggle Discussion Board, but that will only be periodically monitored.\n\n## Quickstart\nLook at the `template.ipynb` notebook in the competition data and follow the instructions.\n\n## Process\nThis capture-the-flag (CTF) follows a different flow than most Kaggle competitions. Competitors will be interacting with API endpoints or code/objects stored in the `input `directory during each of the challenges. Upon successful completion of a challenge, that challenge will return a flag (unique-to-you strings with a length of 128 characters). To update the scoreboard, competitors will submit a `.csv` containing all of their flags -- see [the Kaggle documentation](https://www.kaggle.com/docs/competitions#submitting-by-uploading-a-file) or contact the competition organizers for help. Cumulative scores will be weighted based on the difficulty of the challenge. All competitors start at `0` and work their way towards a perfect score of `1.0`. There are 11 challenges, ensure your `submission.csv` has exactly those 11 challenge rows.\n\nNOTE: The template notebook is just a convenience function and method for submitting flags to the scoreboard. Don't feel constrained to that single operating environment. Interact with the challenges from your local host or any other machine that can access the internet. Afterwards, you can transport your flags into the notebook to update the scoreboard.\n\nNOTE: If you want to interact with online challenges through Kaggle (using the template notebook, for instance), you may need to verify your Kaggle account using a phone number.\n\nPlease do not try and hack any infrastructure or share flags. \n\n\n## Challenges\nCTF's are inherently puzzles that are intended to challenge you and help you learn new things. Sometimes they may be a little ambiguous or misleading. That's part of the challenge!\n\n**Math Challenges:** Four challenges to explore the concept of dimensionality.\n**Chatterbot:** Can AI think for itself? \n**Hotdog and Hotterdog:** Dogs, wieners, and classifiers. What more could you want?\n**bad2good:** Can you poison a dataset to change how something is classified?\n**salt:** This model has some pretty advanced defenses. Can you evade it anyway?\n**theft:** Can you steal this model to get a sneaky owl past it?\n**inference:** I think something's backwards here. Can you, like, back something out?",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "The evaluation metric for this competition is weighted classification accuracy. You can think of the entire challenge as a multiclass classification problem where each challenge has a weight (difficulty) and unique label (flag). Instead of building a classifier to get the right accuracy, you're going to capture the flags.\n\nFlags are unique to each person solving a challenge. Please respect the spirit of the competition and do not share flags. Teams found sharing flags or using shared flags will be disqualified!\n\nNote: There is a submission limit of 20 per day.\n\n## Submission Format\nSubmission files should contain two columns: challenge_id and flag. The file should contain a header and have the following format:\n\nThere should be 11 rows (not counting the header).\n\n```python\nchallenge_id,flag\nmath_1,WTHGOC3ZQBAZ5VT9IZP5W8YG1EWDAM5QVN86Q3UGYX812658WHZ8A8OHVPTSM5NL83CF93SGI7IU8DAHSFA81HJY68XC8BAP9XLXDN3KGR2Z8T9U18K1DTW1DZB8DNFN\n...\n```\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "## One account per participant\nYou cannot sign up to Kaggle from multiple accounts and therefore you cannot submit from multiple accounts.\n\n## No private sharing outside teams\nPrivately sharing code or data outside of teams is not permitted. It's okay to share code if made available to all participants on the forums.\n\n## Submission Limits\nYou may submit a maximum of 20 entries per day.\nYou may select up to 1 final submissions for judging.\n\n## Competition Timeline\nCompetition Timeline dates (including Entry Deadline, Final Submission Deadline, Start Date, and Team Merger Deadline, as applicable) are reflected on the competition’s Overview > Timeline page.",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}