{
  "id": 455966,
  "title": "Learnings & my solutions in this competition",
  "content": "<p>So, this was my first CTF competition and despite being a beginner in security related challenged, i did well mainly because of the community discussions in discord channel and well, hit &amp; trial methods.</p>\n<p><strong>Cluster 1</strong><br>\nThis was the most difficult one in the cluster series but reading the statement &amp; sleeping helped. I just did value_counts for all the columns and then tried permutation &amp; combinations for the best solution.<br>\n<strong>Cluster 2-3</strong><br>\nThese were easy, i used the last year's solutions. But the Cluster3 was interesting since we were to send a message &amp; one might have struggled unless put the whole picture together; there was a sentence in the tsne plot that \"they don't like to talk much\" or some sorts. So as i tried it, I found that any message would work as long as it has \"flag\" in the message<br>\n<strong>Count MNIST</strong><br>\nThis was my last one to be solved &amp; i have no clue how i got it. i was counting pixels, of particular images, whole data, trying their b&amp;w images using a threshold to get 0&amp;1 labels and what not. And last attempt was index &amp; pixel count of that index value.<br>\nI thought of trying Count CIFAR but I guess the above logic couldn't be extended. So i couldn't do this one.<br>\n<strong>Granny1-2</strong><br>\nTheses were the problems I spent the most time on because I was interested in trying adversarial attack. First i stuck to reading the community discussion to get some hint &amp; so i started digging in online gradient descent but the number of requests to be made was huge, so i decided to try black box iterative descent. Although I was able to reach a good accuracy locally but the issue was \"model matching\". I tried many ways and finally i decided to use the original wolf image to attack instead of an apple image that i retrieved from google. and this worked.<br>\nI couldn't do Granny3 mainly because i didn't even try.<br>\nI couldn't crack Passphrase, Inversion &amp; Hush either…<br>\n<strong>Pixelated</strong><br>\nThis one was surprising because i wasn't taking it serious because i didn't expect to solve it. In a random attempt to send different strings, I realized OCR wasn't perfect and in that process, it detected text wrong , and once it might have detected \"&gt;\" and so this was, I guess, an injection task. After this insight, it was pretty easy.<br>\n<strong>Spanglish</strong><br>\nThis one i was able to do after cracking  a few of the \"what's the flag\" challenges &amp; learning ho LLMs work, so after this my first attempt was to send \"flag\" or \"flags\" to the LLM and it worked.<br>\n<strong>Pirate Flag</strong><br>\nThis was similar to the Spanglish and simply asking for the flag \"find the flag\" worked.<br>\n<strong>Semantle 1-2</strong><br>\nThese were interesting ones. I mainly used brute force to crack these by using websites to fetch similar words and somehow i reached the solution. Semantle2 was different but here moohax's hint came into play \"search on google\" and found Trump's quote of \"camera man woman person tv\". Et voila.<br>\n<strong>What's the Flag &amp; What's my IP</strong><br>\nI'll be honest that i cracked these too using brute force using words related to \"retrieve\", \"find\" etc.<br>\n<strong>Pickle</strong><br>\nI'll say this was the easiest and the most irritating one. First it was difficult to be dangerous and then i was too dangerous. Problem statement too just led my astray. But in the course of trying to reduce the danger level, I even tried to read through \"fickle\"'s code base. And so i decided to try simple os library functions like eval, print. Et voila. It worked.<br>\n<strong>Guess Who's back</strong><br>\nI was hoping it to be similar to last year's challenge but i guess it wasn't. And I didn't even have any clue what to try in it but I decided to look at it in my leisure time so i downloaded it on my phone: and accidentally randomly zooming in &amp; out, increasing the brightness. Something minor was visible and so I used opencv to try altering contrast, fine graining etc and found the flag.</p>\n<p>Although the above might not look like solution but they are. An I learnt the importance of sleep, taking a shower (humor intended), brute force techniques in security challenges. I also, finally, learnt adversarial attacks, so that was the best part for me.</p>",
  "comments": [
    {
      "id": 2528336,
      "author_name": "Oleksiy Kononenko",
      "author_url": "",
      "post_date": "2023-11-17T09:24:32.767000",
      "content": "<blockquote>\n  <p>And so i decided to try simple os library functions like eval, print</p>\n</blockquote>\n<p>I tried <code>eval()</code> too, but it didn't work. What was your pickle to trigger a flag with <code>eval()</code>?</p>",
      "votes": 1,
      "replies": [
        {
          "id": 2528339,
          "author_name": "Bhavesh Jain",
          "author_url": "",
          "post_date": "2023-11-17T09:28:40.633000",
          "content": "<p>i sent eval and not eval()<br>\nwhich means<br>\ni sent the function &amp; not the function call</p>",
          "votes": 2,
          "replies": [
            {
              "id": 2528342,
              "author_name": "Oleksiy Kononenko",
              "author_url": "",
              "post_date": "2023-11-17T09:34:59.327000",
              "content": "<p>I see. I found that implementing <code>__reduce__()</code> in a class triggers \"dangerous pickle detected\", then tried to put some <code>eval()</code> stuff there but it didn't work.</p>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2528349,
              "author_name": "Bhavesh Jain",
              "author_url": "",
              "post_date": "2023-11-17T09:40:05.367000",
              "content": "<p>actually, from what i saw, we needed to try without \"reduce\" method</p>",
              "votes": 2,
              "replies": []
            },
            {
              "id": 2528359,
              "author_name": "Oleksiy Kononenko",
              "author_url": "",
              "post_date": "2023-11-17T09:53:49.233000",
              "content": "<p>Yeah, for me much more simple solution worked…</p>",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    }
  ],
  "comment_count": 5,
  "messages": [
    {
      "id": 2528332,
      "postDate": "2023-11-17T09:19:49.133Z",
      "content": "<p>So, this was my first CTF competition and despite being a beginner in security related challenged, i did well mainly because of the community discussions in discord channel and well, hit &amp; trial methods.</p>\n<p><strong>Cluster 1</strong><br>\nThis was the most difficult one in the cluster series but reading the statement &amp; sleeping helped. I just did value_counts for all the columns and then tried permutation &amp; combinations for the best solution.<br>\n<strong>Cluster 2-3</strong><br>\nThese were easy, i used the last year's solutions. But the Cluster3 was interesting since we were to send a message &amp; one might have struggled unless put the whole picture together; there was a sentence in the tsne plot that \"they don't like to talk much\" or some sorts. So as i tried it, I found that any message would work as long as it has \"flag\" in the message<br>\n<strong>Count MNIST</strong><br>\nThis was my last one to be solved &amp; i have no clue how i got it. i was counting pixels, of particular images, whole data, trying their b&amp;w images using a threshold to get 0&amp;1 labels and what not. And last attempt was index &amp; pixel count of that index value.<br>\nI thought of trying Count CIFAR but I guess the above logic couldn't be extended. So i couldn't do this one.<br>\n<strong>Granny1-2</strong><br>\nTheses were the problems I spent the most time on because I was interested in trying adversarial attack. First i stuck to reading the community discussion to get some hint &amp; so i started digging in online gradient descent but the number of requests to be made was huge, so i decided to try black box iterative descent. Although I was able to reach a good accuracy locally but the issue was \"model matching\". I tried many ways and finally i decided to use the original wolf image to attack instead of an apple image that i retrieved from google. and this worked.<br>\nI couldn't do Granny3 mainly because i didn't even try.<br>\nI couldn't crack Passphrase, Inversion &amp; Hush either…<br>\n<strong>Pixelated</strong><br>\nThis one was surprising because i wasn't taking it serious because i didn't expect to solve it. In a random attempt to send different strings, I realized OCR wasn't perfect and in that process, it detected text wrong , and once it might have detected \"&gt;\" and so this was, I guess, an injection task. After this insight, it was pretty easy.<br>\n<strong>Spanglish</strong><br>\nThis one i was able to do after cracking  a few of the \"what's the flag\" challenges &amp; learning ho LLMs work, so after this my first attempt was to send \"flag\" or \"flags\" to the LLM and it worked.<br>\n<strong>Pirate Flag</strong><br>\nThis was similar to the Spanglish and simply asking for the flag \"find the flag\" worked.<br>\n<strong>Semantle 1-2</strong><br>\nThese were interesting ones. I mainly used brute force to crack these by using websites to fetch similar words and somehow i reached the solution. Semantle2 was different but here moohax's hint came into play \"search on google\" and found Trump's quote of \"camera man woman person tv\". Et voila.<br>\n<strong>What's the Flag &amp; What's my IP</strong><br>\nI'll be honest that i cracked these too using brute force using words related to \"retrieve\", \"find\" etc.<br>\n<strong>Pickle</strong><br>\nI'll say this was the easiest and the most irritating one. First it was difficult to be dangerous and then i was too dangerous. Problem statement too just led my astray. But in the course of trying to reduce the danger level, I even tried to read through \"fickle\"'s code base. And so i decided to try simple os library functions like eval, print. Et voila. It worked.<br>\n<strong>Guess Who's back</strong><br>\nI was hoping it to be similar to last year's challenge but i guess it wasn't. And I didn't even have any clue what to try in it but I decided to look at it in my leisure time so i downloaded it on my phone: and accidentally randomly zooming in &amp; out, increasing the brightness. Something minor was visible and so I used opencv to try altering contrast, fine graining etc and found the flag.</p>\n<p>Although the above might not look like solution but they are. An I learnt the importance of sleep, taking a shower (humor intended), brute force techniques in security challenges. I also, finally, learnt adversarial attacks, so that was the best part for me.</p>",
      "rawMarkdown": "So, this was my first CTF competition and despite being a beginner in security related challenged, i did well mainly because of the community discussions in discord channel and well, hit & trial methods.\n\n**Cluster 1**\nThis was the most difficult one in the cluster series but reading the statement & sleeping helped. I just did value_counts for all the columns and then tried permutation & combinations for the best solution.\n**Cluster 2-3**\nThese were easy, i used the last year's solutions. But the Cluster3 was interesting since we were to send a message & one might have struggled unless put the whole picture together; there was a sentence in the tsne plot that \"they don't like to talk much\" or some sorts. So as i tried it, I found that any message would work as long as it has \"flag\" in the message\n**Count MNIST**\nThis was my last one to be solved & i have no clue how i got it. i was counting pixels, of particular images, whole data, trying their b&w images using a threshold to get 0&1 labels and what not. And last attempt was index & pixel count of that index value.\nI thought of trying Count CIFAR but I guess the above logic couldn't be extended. So i couldn't do this one.\n**Granny1-2**\nTheses were the problems I spent the most time on because I was interested in trying adversarial attack. First i stuck to reading the community discussion to get some hint & so i started digging in online gradient descent but the number of requests to be made was huge, so i decided to try black box iterative descent. Although I was able to reach a good accuracy locally but the issue was \"model matching\". I tried many ways and finally i decided to use the original wolf image to attack instead of an apple image that i retrieved from google. and this worked.\nI couldn't do Granny3 mainly because i didn't even try.\nI couldn't crack Passphrase, Inversion & Hush either...\n**Pixelated**\nThis one was surprising because i wasn't taking it serious because i didn't expect to solve it. In a random attempt to send different strings, I realized OCR wasn't perfect and in that process, it detected text wrong , and once it might have detected \">\" and so this was, I guess, an injection task. After this insight, it was pretty easy.\n**Spanglish**\nThis one i was able to do after cracking  a few of the \"what's the flag\" challenges & learning ho LLMs work, so after this my first attempt was to send \"flag\" or \"flags\" to the LLM and it worked.\n**Pirate Flag**\nThis was similar to the Spanglish and simply asking for the flag \"find the flag\" worked.\n**Semantle 1-2**\nThese were interesting ones. I mainly used brute force to crack these by using websites to fetch similar words and somehow i reached the solution. Semantle2 was different but here moohax's hint came into play \"search on google\" and found Trump's quote of \"camera man woman person tv\". Et voila.\n**What's the Flag & What's my IP**\nI'll be honest that i cracked these too using brute force using words related to \"retrieve\", \"find\" etc.\n**Pickle**\nI'll say this was the easiest and the most irritating one. First it was difficult to be dangerous and then i was too dangerous. Problem statement too just led my astray. But in the course of trying to reduce the danger level, I even tried to read through \"fickle\"'s code base. And so i decided to try simple os library functions like eval, print. Et voila. It worked.\n**Guess Who's back**\nI was hoping it to be similar to last year's challenge but i guess it wasn't. And I didn't even have any clue what to try in it but I decided to look at it in my leisure time so i downloaded it on my phone: and accidentally randomly zooming in & out, increasing the brightness. Something minor was visible and so I used opencv to try altering contrast, fine graining etc and found the flag.\n\nAlthough the above might not look like solution but they are. An I learnt the importance of sleep, taking a shower (humor intended), brute force techniques in security challenges. I also, finally, learnt adversarial attacks, so that was the best part for me.",
      "votes": 9
    },
    {
      "id": 2528336,
      "postDate": "2023-11-17T09:24:32.767Z",
      "content": "<blockquote>\n  <p>And so i decided to try simple os library functions like eval, print</p>\n</blockquote>\n<p>I tried <code>eval()</code> too, but it didn't work. What was your pickle to trigger a flag with <code>eval()</code>?</p>",
      "rawMarkdown": ">And so i decided to try simple os library functions like eval, print\n\nI tried `eval()` too, but it didn't work. What was your pickle to trigger a flag with `eval()`?",
      "votes": 1,
      "replies": [
        {
          "id": 2528339,
          "postDate": "2023-11-17T09:28:40.633Z",
          "content": "<p>i sent eval and not eval()<br>\nwhich means<br>\ni sent the function &amp; not the function call</p>",
          "rawMarkdown": "i sent eval and not eval()\nwhich means\ni sent the function & not the function call",
          "votes": 2,
          "replies": [
            {
              "id": 2528342,
              "postDate": "2023-11-17T09:34:59.327Z",
              "content": "<p>I see. I found that implementing <code>__reduce__()</code> in a class triggers \"dangerous pickle detected\", then tried to put some <code>eval()</code> stuff there but it didn't work.</p>",
              "rawMarkdown": "I see. I found that implementing `__reduce__()` in a class triggers \"dangerous pickle detected\", then tried to put some `eval()` stuff there but it didn't work."
            },
            {
              "id": 2528349,
              "postDate": "2023-11-17T09:40:05.367Z",
              "content": "<p>actually, from what i saw, we needed to try without \"reduce\" method</p>",
              "rawMarkdown": "actually, from what i saw, we needed to try without \"reduce\" method",
              "votes": 2
            },
            {
              "id": 2528359,
              "postDate": "2023-11-17T09:53:49.233Z",
              "content": "<p>Yeah, for me much more simple solution worked…</p>",
              "rawMarkdown": "Yeah, for me much more simple solution worked..."
            }
          ]
        }
      ]
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-19T16:05:55Z",
  "competition_id": 57818,
  "competition_slug": "ai-village-capture-the-flag-defcon31",
  "team_id": 11060093,
  "solution_url": "/competitions/ai-village-capture-the-flag-defcon31/writeups/im-dome-learnings-my-solutions-in-this-competition"
}