{
  "id": 456747,
  "title": "27th place solution - 23 points",
  "content": "<h1>Solutions</h1>\n<p>It is my first CTF competition and i really like this experience. To get many of solutions i reffer to previous year solutions and other CTF competitions and forums. <br>\nThanks authors for thier hard work, vision, and contribution to the AI community!</p>\n<h2>2. Cluster - Level 1</h2>\n<p>I just make model predictions and find target group from the misclassified data. To find group i count most misclassified values of each categorical features and find witch one will maximaze the score. Same strategy with numerical. <br>\n<code>input_data = df[(df['income'] != df['predictions']) &amp; (df[\"age\"] &lt;= 38) &amp; (df['occupation'] == \"Tech-support\")].id.astype(int).tolist()</code></p>\n<h2>3/4 Cluster - Level 2&amp;3</h2>\n<p>Thanks for this task to last year solutions. <br>\n<a href=\"https://www.kaggle.com/code/cdeotte/solutions-d3fc0n-ctf-lb-0-894#HOTTERDOG-(id:-hotterdog)----400-Points\" target=\"_blank\">https://www.kaggle.com/code/cdeotte/solutions-d3fc0n-ctf-lb-0-894#HOTTERDOG-(id:-hotterdog)----400-Points</a></p>\n<p>But it was intresting to find target message from this:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F5163796%2F58e15f209da0215222fc11a5376196e4%2Fphoto_2023-10-26_11-06-21.jpg?generation=1700553620263971&amp;alt=media\" alt=\"\"></p>\n<h1>5. Count MNIST</h1>\n<p>[255, 23435] = [pixel value, count]. Output data should have 256 values what corresponds count of RGB pixel values. And the second hint - count task, so just find how common is the value of each pixel is in the dataset. Datasets can be not the same, thanks for this discussion:<br>\n<a href=\"https://www.kaggle.com/competitions/ai-village-capture-the-flag-defcon31/discussion/449263\" target=\"_blank\">https://www.kaggle.com/competitions/ai-village-capture-the-flag-defcon31/discussion/449263</a></p>\n<h1>7. Granny 1</h1>\n<p>Solution also from the last year, but the model is MobileNetV2:<br>\n<a href=\"https://pytorch.org/hub/pytorch_vision_mobilenet_v2/\" target=\"_blank\">https://pytorch.org/hub/pytorch_vision_mobilenet_v2/</a><br>\nBut the issue what which took a long time - you should use same processing while submitting the image (normalize, resize and crop).</p>\n<h1>8. Granny 2</h1>\n<p>Same solution as granny 1, but i convert save an image as jpg and iterative changing the image in many epochs with different learning rates to maximize the score.</p>\n<h1>11. Pixelated</h1>\n<p>I just see previous CTF challenges and found the strategy with send request with \"&lt;&gt;\". Then find that we should insert is_admin tag, but it's was hard to pick a correct font and size of image. After many iterations i found the best to correct recognize this: Itrue. <br>\n<code>img = Image.new(mode=\"RGB\", size=(800,92), color=(255,255,255))</code><br>\n<code>font = ImageFont.FreeTypeFont(\"ABeeZee-Regular.otf\",size=36)</code></p>\n<h1>17. Inversion</h1>\n<p>Same strategy as in the last year, but to find letters in the 5,6,8 places we should inverse probs of the model outputs (argmax(probs) -&gt; argmin(probs)) and then we can find \"O\" on the 6th position. <br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F5163796%2F7ca1b04645a90d7155d174c6a8e0dfaf%2Fphoto_2023-11-21_11-57-30.jpg?generation=1700557092622345&amp;alt=media\" alt=\"\"></p>\n<h1>24. Guess Who's Back?</h1>\n<p>Just change pixel values of sloth image. I substract some values from initial pixel values and recognize a part of the text one by one. </p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F5163796%2F5c9ffd306c3f8a22911cc037865a60b5%2Fgray_sloth_inversed.png?generation=1700557495373809&amp;alt=media\" alt=\"\"></p>",
  "comments": [],
  "comment_count": 0,
  "messages": [
    {
      "id": 2533027,
      "postDate": "2023-11-21T14:36:05.083Z",
      "content": "<h1>Solutions</h1>\n<p>It is my first CTF competition and i really like this experience. To get many of solutions i reffer to previous year solutions and other CTF competitions and forums. <br>\nThanks authors for thier hard work, vision, and contribution to the AI community!</p>\n<h2>2. Cluster - Level 1</h2>\n<p>I just make model predictions and find target group from the misclassified data. To find group i count most misclassified values of each categorical features and find witch one will maximaze the score. Same strategy with numerical. <br>\n<code>input_data = df[(df['income'] != df['predictions']) &amp; (df[\"age\"] &lt;= 38) &amp; (df['occupation'] == \"Tech-support\")].id.astype(int).tolist()</code></p>\n<h2>3/4 Cluster - Level 2&amp;3</h2>\n<p>Thanks for this task to last year solutions. <br>\n<a href=\"https://www.kaggle.com/code/cdeotte/solutions-d3fc0n-ctf-lb-0-894#HOTTERDOG-(id:-hotterdog)----400-Points\" target=\"_blank\">https://www.kaggle.com/code/cdeotte/solutions-d3fc0n-ctf-lb-0-894#HOTTERDOG-(id:-hotterdog)----400-Points</a></p>\n<p>But it was intresting to find target message from this:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F5163796%2F58e15f209da0215222fc11a5376196e4%2Fphoto_2023-10-26_11-06-21.jpg?generation=1700553620263971&amp;alt=media\" alt=\"\"></p>\n<h1>5. Count MNIST</h1>\n<p>[255, 23435] = [pixel value, count]. Output data should have 256 values what corresponds count of RGB pixel values. And the second hint - count task, so just find how common is the value of each pixel is in the dataset. Datasets can be not the same, thanks for this discussion:<br>\n<a href=\"https://www.kaggle.com/competitions/ai-village-capture-the-flag-defcon31/discussion/449263\" target=\"_blank\">https://www.kaggle.com/competitions/ai-village-capture-the-flag-defcon31/discussion/449263</a></p>\n<h1>7. Granny 1</h1>\n<p>Solution also from the last year, but the model is MobileNetV2:<br>\n<a href=\"https://pytorch.org/hub/pytorch_vision_mobilenet_v2/\" target=\"_blank\">https://pytorch.org/hub/pytorch_vision_mobilenet_v2/</a><br>\nBut the issue what which took a long time - you should use same processing while submitting the image (normalize, resize and crop).</p>\n<h1>8. Granny 2</h1>\n<p>Same solution as granny 1, but i convert save an image as jpg and iterative changing the image in many epochs with different learning rates to maximize the score.</p>\n<h1>11. Pixelated</h1>\n<p>I just see previous CTF challenges and found the strategy with send request with \"&lt;&gt;\". Then find that we should insert is_admin tag, but it's was hard to pick a correct font and size of image. After many iterations i found the best to correct recognize this: Itrue. <br>\n<code>img = Image.new(mode=\"RGB\", size=(800,92), color=(255,255,255))</code><br>\n<code>font = ImageFont.FreeTypeFont(\"ABeeZee-Regular.otf\",size=36)</code></p>\n<h1>17. Inversion</h1>\n<p>Same strategy as in the last year, but to find letters in the 5,6,8 places we should inverse probs of the model outputs (argmax(probs) -&gt; argmin(probs)) and then we can find \"O\" on the 6th position. <br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F5163796%2F7ca1b04645a90d7155d174c6a8e0dfaf%2Fphoto_2023-11-21_11-57-30.jpg?generation=1700557092622345&amp;alt=media\" alt=\"\"></p>\n<h1>24. Guess Who's Back?</h1>\n<p>Just change pixel values of sloth image. I substract some values from initial pixel values and recognize a part of the text one by one. </p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F5163796%2F5c9ffd306c3f8a22911cc037865a60b5%2Fgray_sloth_inversed.png?generation=1700557495373809&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "# Solutions\nIt is my first CTF competition and i really like this experience. To get many of solutions i reffer to previous year solutions and other CTF competitions and forums. \nThanks authors for thier hard work, vision, and contribution to the AI community!\n\n## 2. Cluster - Level 1\nI just make model predictions and find target group from the misclassified data. To find group i count most misclassified values of each categorical features and find witch one will maximaze the score. Same strategy with numerical. \n`input_data = df[(df['income'] != df['predictions']) & (df[\"age\"] <= 38) & (df['occupation'] == \"Tech-support\")].id.astype(int).tolist()`\n\n## 3/4 Cluster - Level 2&3\n\nThanks for this task to last year solutions. \nhttps://www.kaggle.com/code/cdeotte/solutions-d3fc0n-ctf-lb-0-894#HOTTERDOG-(id:-hotterdog)----400-Points\n\nBut it was intresting to find target message from this:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F5163796%2F58e15f209da0215222fc11a5376196e4%2Fphoto_2023-10-26_11-06-21.jpg?generation=1700553620263971&alt=media)\n\n# 5. Count MNIST \n[255, 23435] = [pixel value, count]. Output data should have 256 values what corresponds count of RGB pixel values. And the second hint - count task, so just find how common is the value of each pixel is in the dataset. Datasets can be not the same, thanks for this discussion:\nhttps://www.kaggle.com/competitions/ai-village-capture-the-flag-defcon31/discussion/449263\n\n# 7. Granny 1\nSolution also from the last year, but the model is MobileNetV2:\nhttps://pytorch.org/hub/pytorch_vision_mobilenet_v2/\nBut the issue what which took a long time - you should use same processing while submitting the image (normalize, resize and crop).\n\n# 8. Granny 2\nSame solution as granny 1, but i convert save an image as jpg and iterative changing the image in many epochs with different learning rates to maximize the score.\n\n# 11. Pixelated\nI just see previous CTF challenges and found the strategy with send request with \"<>\". Then find that we should insert is_admin tag, but it's was hard to pick a correct font and size of image. After many iterations i found the best to correct recognize this: I</text><is_admin>true</is_admin><text>. \n`img = Image.new(mode=\"RGB\", size=(800,92), color=(255,255,255))`\n`font = ImageFont.FreeTypeFont(\"ABeeZee-Regular.otf\",size=36)`\n\n# 17. Inversion\nSame strategy as in the last year, but to find letters in the 5,6,8 places we should inverse probs of the model outputs (argmax(probs) -> argmin(probs)) and then we can find \"O\" on the 6th position. \n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F5163796%2F7ca1b04645a90d7155d174c6a8e0dfaf%2Fphoto_2023-11-21_11-57-30.jpg?generation=1700557092622345&alt=media)\n\n# 24. Guess Who's Back?\nJust change pixel values of sloth image. I substract some values from initial pixel values and recognize a part of the text one by one. \n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F5163796%2F5c9ffd306c3f8a22911cc037865a60b5%2Fgray_sloth_inversed.png?generation=1700557495373809&alt=media)",
      "votes": 10
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-19T16:07:14Z",
  "competition_id": 57818,
  "competition_slug": "ai-village-capture-the-flag-defcon31",
  "team_id": 11106817,
  "solution_url": "/competitions/ai-village-capture-the-flag-defcon31/writeups/evgeniy-belyakin-27th-place-solution-23-points"
}