{"componentChunkName":"component---src-templates-post-template-js","path":"/ctf-n00b-2023-en","result":{"data":{"markdownRemark":{"id":"1205f9d1-37de-56f4-b2f0-9b5d44c29ef0","html":"<blockquote>\n<p>This page has been machine-translated from the <a href=\"/ctf-n00b-2023\">original page</a>.</p>\n</blockquote>\n<p>I participated in n00bzCTF 2023 as part of 0nePadding, and we placed 79th out of 855 teams.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 366px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/d1580ec914dccf8106af56edf16b6b4a/8b153/image-20230614190703619.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 72.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAACaUlEQVQ4y31TyW7TUBTtLyB1CBnsxHNi1xnI0DhxEmdwmiZNmoQmoBYVNgghipBYsEFigcQCiSWIT+g3ICQ25Q8QC37mcN9rbXWIaun4We/de+65512vJRUDDCk1jXhKRSypcMSTKkRZ52dsnyHBIGkcQYxAMSw34FhjLwZ24Dgu3FoTrUYL5XIV+7sjDPsDFEs7cF0PvbaPTruHfs9HzWkQXFh2nhcOeELChKRjOj7AbESYHODocIHlZI52q4Pj5RJPFks8mh9iOZtjMZ9h6A/w4uQZvGaTqw8JA6lslbXMJbkGQTIIOqKiSmdpUnEJhVmjcTTcFkwrG7YdKrxKykiKxQJ2e3V0PQfjvotcIUctl1GrleBUi3DrJaRNi4opYbu3PAw2RNkgX2yMdl3yzEGlVEC58gC9jgOvtYOmW+FghEz51dxrhJyMDlTDJIV5SCyQkM1loegZ7nFSvkiUtIvYm2S3CFmSncvheOHTDbvYHzTxdNFD3Sni4cTDdK+JMe3P9lvoklpBvk52zcNwFmm+ZFKkZ7ZJnQ0hpcCwtmGYJkSJLog8YwrZPru8O1sWKKBCcyjKGjbuC9CtPJyGh/VIgopYsAsVZOwCEZro9Iew80V+iStbZiOzFU/h0+cvODs7Q6Vahz+a4vz3OTpdH54/BHt+/fwBi4j//P2H169OsREVqJi5WqHEW1bx/OUpvI6P7t4EX799xwkNsLGdx5u377B8fATNzOH9h4/w+3uIiTIpzqz28MILg1eN0Yyxf3c9EkcknuTzdm8zis2oyOO2YiL3+04Pw/b1zJVvM1SgGFbYXrDeHJv/bYO4H/vHrLcAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/d1580ec914dccf8106af56edf16b6b4a/8ac56/image-20230614190703619.webp 240w,\n/static/d1580ec914dccf8106af56edf16b6b4a/4146f/image-20230614190703619.webp 366w\"\n              sizes=\"(max-width: 366px) 100vw, 366px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/d1580ec914dccf8106af56edf16b6b4a/8ff5a/image-20230614190703619.png 240w,\n/static/d1580ec914dccf8106af56edf16b6b4a/8b153/image-20230614190703619.png 366w\"\n            sizes=\"(max-width: 366px) 100vw, 366px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/d1580ec914dccf8106af56edf16b6b4a/8b153/image-20230614190703619.png\"\n            alt=\"image-20230614190703619\"\n            title=\"image-20230614190703619\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>This time I only participated lightly, but I wanted to jot down the challenges where I learned something.</p>\n<!-- omit in toc -->\n<h2 id=\"table-of-contents\" style=\"position:relative;\"><a href=\"#table-of-contents\" aria-label=\"table of contents permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Table of Contents</h2>\n<ul>\n<li><a href=\"#mypinrev\">MyPin(Rev)</a></li>\n<li><a href=\"#ezrevrev\">EZrev(Rev)</a></li>\n<li><a href=\"#zzzrev\">zzz(Rev)</a></li>\n<li><a href=\"#summary\">Summary</a></li>\n</ul>\n<h2 id=\"mypinrev\" style=\"position:relative;\"><a href=\"#mypinrev\" aria-label=\"mypinrev permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>MyPin(Rev)</h2>\n<blockquote>\n<p>I made a safe with a pin of only two digits.</p>\n</blockquote>\n<p>Running the jar file provided as the challenge binary launched the following application.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 400px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/568a22e21d47c11a1c0fd53e66a1f533/e17e5/image-20230613234101350.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 94.16666666666666%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAACXBIWXMAAAsTAAALEwEAmpwYAAACUUlEQVQ4y62Ta2/aMBSG+f8/qB83DVXd1k2ihQIptGkuhMR2YjsXKCGwd8cO4bJJVdUN6dG5mdfHOXbv0ZkhCkIkCQNLEoLjPb9mu7U2z3M0TYO6rrFardCL4wRpmiJhAky0Ni8qonwTnRfIywo8zSgurFhZluhprSEo6ScKoSiJAj7LWxKNgBeYBwwvS3nKn0P1MBaQWYaM6EkpIagzVa6xrveoNg1Wm53F+K/bX0hSDV1tbL2rHal31KW0YkbrKFitN9jtf2Hb7Kxtdq1PLlKVY/1at/XdHo2t71uf1qVSXQpy8+1kibTYQFZbuAuBBdfIytoSJBmYrKxv1piayF+tb4h51h75JCjwFCk8JyVcVmIaZJhFGq6NKzg+x/wQmzWzBa2NCxs/xSWCpYCS5huSoCJBxgWGrsC9pwiJka8w9Fvf2Lt5jHs3xdA75YbGEncvkk7EYHTsUIyTkOD1JMaXCUd/wi4wuetRgP44pvjv+ucxg+Ml0Eqepmw6vJ0G+DoJ8e2ccYjv0wiDeYSfj9Fl7cDNQ4i5v7wUNFPWxQrrzRYrmmbHmq6N1AWW9IpEpi5qR+g/4s9rkzCOkZfiIdCWcdjaSVTi1onw6YeDm5HX1g+1bt2IrLvgl0Mxr8UknyOaNr2KRy/GzI+tNa/EjVI8hdzG55g1DtlFzE9D4ZxjOp3Ce3HhTMaIFiGKXNtvcoR21yq7zB3IiU7MHpkxhsFggH6/j6urK3ieZztOD2/zvciuwy5hOhV0weXZbh+h1zlKKcv5jh8SfKv9f+rwf/Ebf7eP4EwjCPcAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/568a22e21d47c11a1c0fd53e66a1f533/8ac56/image-20230613234101350.webp 240w,\n/static/568a22e21d47c11a1c0fd53e66a1f533/7f61c/image-20230613234101350.webp 400w\"\n              sizes=\"(max-width: 400px) 100vw, 400px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/568a22e21d47c11a1c0fd53e66a1f533/8ff5a/image-20230613234101350.png 240w,\n/static/568a22e21d47c11a1c0fd53e66a1f533/e17e5/image-20230613234101350.png 400w\"\n            sizes=\"(max-width: 400px) 100vw, 400px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/568a22e21d47c11a1c0fd53e66a1f533/e17e5/image-20230613234101350.png\"\n            alt=\"image-20230613234101350\"\n            title=\"image-20230613234101350\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>The class layout was as follows.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">jar -tf My-pin.jar\n<span class=\"token operator\">></span>\nMETA-INF/\nMETA-INF/MANIFEST.MF\nMypin.class\nPinButton.class\nResetButton.class\nSecret.class</code></pre></div>\n<p>After checking the decompiled jar file, I found that the application does the following.</p>\n<ul>\n<li>Each time a button is pressed, the variable <code class=\"language-text\">cnt</code> is incremented by 1, and the buttons can be used at most 9 times.</li>\n<li>When a button is pressed, <code class=\"language-text\">\"0\"</code> or <code class=\"language-text\">\"1\"</code> is passed to the <code class=\"language-text\">process</code> function of the <code class=\"language-text\">Secret</code> class, updating part of the predefined <code class=\"language-text\">mydata</code> array.</li>\n<li>The <code class=\"language-text\">getData</code> function of the <code class=\"language-text\">Secret</code> class has logic that generates some string based on the information in the <code class=\"language-text\">mydata</code> array.</li>\n<li>There are <code class=\"language-text\">2**9 (=512)</code> possible input patterns, so one of them should make the output of the <code class=\"language-text\">getData</code> function become the flag.</li>\n</ul>\n<p>Once I had figured that out, I thought, “The rest will be easy if I rewrite the Java program in Python and brute-force it!” Unfortunately, even after trying every decompilation approach I could think of, the Python script I rewrote never behaved exactly the same as the original Java program.</p>\n<p>Reference: <a href=\"https://github.com/skylot/jadx\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub - skylot/jadx: Dex to Java decompiler</a></p>\n<p>In the end, it seems the proper solution was to take advantage of the fact that a jar file (or class file) can be called from your own Java program as a library.</p>\n<p>First, extract the jar file into class files with the following command.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">jar xf My-pin.jar</code></pre></div>\n<p>This gives you a file named <code class=\"language-text\">Secret.class</code>, so I wrote the following Java program to brute-force the flag by reusing the challenge binary’s <code class=\"language-text\">Secret</code> class.</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Solve</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">void</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> args<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token comment\">// 2**9 = 512</span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> <span class=\"token number\">512</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token class-name\">String</span> pin <span class=\"token operator\">=</span> <span class=\"token class-name\">String</span><span class=\"token punctuation\">.</span><span class=\"token function\">format</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"%9s\"</span><span class=\"token punctuation\">,</span> <span class=\"token class-name\">Integer</span><span class=\"token punctuation\">.</span><span class=\"token function\">toBinaryString</span><span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">replace</span><span class=\"token punctuation\">(</span><span class=\"token char\">' '</span><span class=\"token punctuation\">,</span> <span class=\"token char\">'0'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token class-name\">Secret</span> secret <span class=\"token operator\">=</span> <span class=\"token class-name\">Secret</span><span class=\"token punctuation\">.</span><span class=\"token function\">getInstance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            secret<span class=\"token punctuation\">.</span><span class=\"token function\">resetInstance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span> c <span class=\"token operator\">:</span> pin<span class=\"token punctuation\">.</span><span class=\"token function\">toCharArray</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                secret<span class=\"token punctuation\">.</span><span class=\"token function\">process</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n            <span class=\"token class-name\">String</span> data <span class=\"token operator\">=</span> secret<span class=\"token punctuation\">.</span><span class=\"token function\">getData</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>data<span class=\"token punctuation\">.</span><span class=\"token function\">contains</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"n00bz\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"PIN: \"</span> <span class=\"token operator\">+</span> pin <span class=\"token operator\">+</span> <span class=\"token string\">\", Flag: \"</span> <span class=\"token operator\">+</span> data<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Reference: <a href=\"https://chocapikk.com/posts/2023/n00bzctf2023-mypin/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">n00bzCTF 2023 - MyPin :: Chocapikk’s blog</a></p>\n<p>Place this as <code class=\"language-text\">Solve.java</code> in the same directory as <code class=\"language-text\">Secret.class</code>, then run the following command to recover the flag.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">javac Solve.java <span class=\"token punctuation\">;</span> java Solve</code></pre></div>\n<p>Reference: <a href=\"https://stackoverflow.com/questions/8140281/java-import-giving-error\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Java import giving error - Stack Overflow</a></p>\n<h2 id=\"ezrevrev\" style=\"position:relative;\"><a href=\"#ezrevrev\" aria-label=\"ezrevrev permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>EZrev(Rev)</h2>\n<blockquote>\n<p>Rev is EZ! Author: NoobHacker</p>\n</blockquote>\n<p>Decompiling the provided class file yields the following code.</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token comment\">/*\n * Decompiled with CFR 0.150.\n */</span>\n<span class=\"token keyword\">import</span> <span class=\"token namespace\">java<span class=\"token punctuation\">.</span>util<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">Arrays</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">EZrev</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">void</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> arrstring<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">int</span> n<span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>arrstring<span class=\"token punctuation\">.</span>length <span class=\"token operator\">!=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"L\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token class-name\">String</span> string <span class=\"token operator\">=</span> arrstring<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>string<span class=\"token punctuation\">.</span><span class=\"token function\">length</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">31</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"L\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> arrn <span class=\"token operator\">=</span> string<span class=\"token punctuation\">.</span><span class=\"token function\">chars</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">toArray</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span>n <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> n <span class=\"token operator\">&lt;</span> arrn<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>n<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            arrn<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> n <span class=\"token operator\">%</span> <span class=\"token number\">2</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span> <span class=\"token operator\">?</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>arrn<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> <span class=\"token number\">0x13</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>arrn<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> <span class=\"token number\">0x37</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span>n <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> n <span class=\"token operator\">&lt;</span> arrn<span class=\"token punctuation\">.</span>length <span class=\"token operator\">/</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>n<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>n <span class=\"token operator\">%</span> <span class=\"token number\">2</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                <span class=\"token keyword\">int</span> n2 <span class=\"token operator\">=</span> arrn<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">-</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n                arrn<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>arrn<span class=\"token punctuation\">[</span>arrn<span class=\"token punctuation\">.</span>length <span class=\"token operator\">-</span> <span class=\"token number\">1</span> <span class=\"token operator\">-</span> n<span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> <span class=\"token number\">20</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                arrn<span class=\"token punctuation\">[</span>arrn<span class=\"token punctuation\">.</span>length <span class=\"token operator\">-</span> <span class=\"token number\">1</span> <span class=\"token operator\">-</span> n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token punctuation\">)</span>n2<span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">continue</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n            arrn<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>arrn<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> <span class=\"token number\">30</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> arrn2 <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">{</span><span class=\"token number\">130</span><span class=\"token punctuation\">,</span> <span class=\"token number\">37</span><span class=\"token punctuation\">,</span> <span class=\"token number\">70</span><span class=\"token punctuation\">,</span> <span class=\"token number\">115</span><span class=\"token punctuation\">,</span> <span class=\"token number\">64</span><span class=\"token punctuation\">,</span> <span class=\"token number\">106</span><span class=\"token punctuation\">,</span> <span class=\"token number\">143</span><span class=\"token punctuation\">,</span> <span class=\"token number\">34</span><span class=\"token punctuation\">,</span> <span class=\"token number\">54</span><span class=\"token punctuation\">,</span> <span class=\"token number\">134</span><span class=\"token punctuation\">,</span> <span class=\"token number\">96</span><span class=\"token punctuation\">,</span> <span class=\"token number\">98</span><span class=\"token punctuation\">,</span> <span class=\"token number\">125</span><span class=\"token punctuation\">,</span> <span class=\"token number\">98</span><span class=\"token punctuation\">,</span> <span class=\"token number\">138</span><span class=\"token punctuation\">,</span> <span class=\"token number\">104</span><span class=\"token punctuation\">,</span> <span class=\"token number\">25</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">66</span><span class=\"token punctuation\">,</span> <span class=\"token number\">78</span><span class=\"token punctuation\">,</span> <span class=\"token number\">24</span><span class=\"token punctuation\">,</span> <span class=\"token number\">69</span><span class=\"token punctuation\">,</span> <span class=\"token number\">91</span><span class=\"token punctuation\">,</span> <span class=\"token number\">80</span><span class=\"token punctuation\">,</span> <span class=\"token number\">87</span><span class=\"token punctuation\">,</span> <span class=\"token number\">67</span><span class=\"token punctuation\">,</span> <span class=\"token number\">95</span><span class=\"token punctuation\">,</span> <span class=\"token number\">8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">25</span><span class=\"token punctuation\">,</span> <span class=\"token number\">22</span><span class=\"token punctuation\">,</span> <span class=\"token number\">115</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">Arrays</span><span class=\"token punctuation\">.</span><span class=\"token function\">equals</span><span class=\"token punctuation\">(</span>arrn<span class=\"token punctuation\">,</span> arrn2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"W\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"L\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>After that, you can recover the flag just by writing code that works backwards.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">arr2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">130</span><span class=\"token punctuation\">,</span> <span class=\"token number\">37</span><span class=\"token punctuation\">,</span> <span class=\"token number\">70</span><span class=\"token punctuation\">,</span> <span class=\"token number\">115</span><span class=\"token punctuation\">,</span> <span class=\"token number\">64</span><span class=\"token punctuation\">,</span> <span class=\"token number\">106</span><span class=\"token punctuation\">,</span> <span class=\"token number\">143</span><span class=\"token punctuation\">,</span> <span class=\"token number\">34</span><span class=\"token punctuation\">,</span> <span class=\"token number\">54</span><span class=\"token punctuation\">,</span> <span class=\"token number\">134</span><span class=\"token punctuation\">,</span> <span class=\"token number\">96</span><span class=\"token punctuation\">,</span> <span class=\"token number\">98</span><span class=\"token punctuation\">,</span> <span class=\"token number\">125</span><span class=\"token punctuation\">,</span> <span class=\"token number\">98</span><span class=\"token punctuation\">,</span> <span class=\"token number\">138</span><span class=\"token punctuation\">,</span> <span class=\"token number\">104</span><span class=\"token punctuation\">,</span> <span class=\"token number\">25</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">66</span><span class=\"token punctuation\">,</span> <span class=\"token number\">78</span><span class=\"token punctuation\">,</span> <span class=\"token number\">24</span><span class=\"token punctuation\">,</span> <span class=\"token number\">69</span><span class=\"token punctuation\">,</span> <span class=\"token number\">91</span><span class=\"token punctuation\">,</span> <span class=\"token number\">80</span><span class=\"token punctuation\">,</span> <span class=\"token number\">87</span><span class=\"token punctuation\">,</span> <span class=\"token number\">67</span><span class=\"token punctuation\">,</span> <span class=\"token number\">95</span><span class=\"token punctuation\">,</span> <span class=\"token number\">8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">25</span><span class=\"token punctuation\">,</span> <span class=\"token number\">22</span><span class=\"token punctuation\">,</span> <span class=\"token number\">115</span><span class=\"token punctuation\">]</span>\narr <span class=\"token operator\">=</span> arr2<span class=\"token punctuation\">.</span>copy<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span><span class=\"token operator\">//</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> i <span class=\"token operator\">%</span> <span class=\"token number\">2</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n        n2 <span class=\"token operator\">=</span> arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span>\n        arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> arr<span class=\"token punctuation\">[</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token operator\">-</span>i<span class=\"token punctuation\">]</span>\n        arr<span class=\"token punctuation\">[</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token operator\">-</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> n2\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span><span class=\"token operator\">//</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> i <span class=\"token operator\">%</span> <span class=\"token number\">2</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n        arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> arr2<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">-</span> <span class=\"token number\">30</span> \n    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n        arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> arr2<span class=\"token punctuation\">[</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token operator\">-</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> <span class=\"token number\">10</span>\n        arr<span class=\"token punctuation\">[</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token operator\">-</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> arr2<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">-</span> <span class=\"token number\">20</span>\n\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>arr2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> i <span class=\"token operator\">%</span> <span class=\"token number\">2</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n        arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> <span class=\"token number\">0x13</span>\n    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n        arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> <span class=\"token number\">0x37</span>\n\n<span class=\"token keyword\">for</span> a <span class=\"token keyword\">in</span> arr<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> end<span class=\"token operator\">=</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"zzzrev\" style=\"position:relative;\"><a href=\"#zzzrev\" aria-label=\"zzzrev permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>zzz(Rev)</h2>\n<p>Decompiling the ELF file provided as the challenge binary with Ghidra gave the following result.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 718px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/8081ccf06a42519cf5d1dd0287094130/57dc1/image-20230621232054338.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 70%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAABxElEQVQ4y6WTz0vcQBzF8/+DPawVxYMHD4IHDx6EFjwIym5paSmW0q27G11xQddsJpPMZCbz6/Wb0CyxuOtCJ3xJMkw+8968b6K9vUu82+qjt93Hzs4A2+8H6PX62N39hP39zzg4+ILDw684OvqG4+PvODm5xunpD5yd/cSHj79wfj7ExcUNrq5GGAwmiKbTe2gDqIpKAdYG/M+IJpMYmmCVqWCMRiBeXd6HVyuE9RXd3U3x8Gjx9DxHzmPIMiXFptmtXtCOt0AvgIV0ELJAVQk4a8m2bTHwwS/B3Q1WWx7HKIocmUiQcIFnzpAWj3S/ByvmyCSHc66jslUMvManM7xFxjIkaYJ5yiFUglwvkCoG401nadf+GoVxTOcmAE4qhcnBywJsIcEziTwrYaSHLQOsopIUlgsNfKXCWwJWGhSGoxR9M1kDHM01RR3g6zL1O4H8BpbT1KEsF9CaUTAUCoGdV7COQvIamsg+uKX1deFE4/GEIIGCkRDCgLEKbGYgEwVJ1stUgy8UFHeoOCm1b1ge3YwIFMB5aP4Urf3KU98o5eHwN0HowJvWCMs8m4/b6+/zRpZns9mLdmg7vqvo31rXOn8AOtk8CEq8ggYAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/8081ccf06a42519cf5d1dd0287094130/8ac56/image-20230621232054338.webp 240w,\n/static/8081ccf06a42519cf5d1dd0287094130/d3be9/image-20230621232054338.webp 480w,\n/static/8081ccf06a42519cf5d1dd0287094130/7d0c9/image-20230621232054338.webp 718w\"\n              sizes=\"(max-width: 718px) 100vw, 718px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/8081ccf06a42519cf5d1dd0287094130/8ff5a/image-20230621232054338.png 240w,\n/static/8081ccf06a42519cf5d1dd0287094130/e85cb/image-20230621232054338.png 480w,\n/static/8081ccf06a42519cf5d1dd0287094130/57dc1/image-20230621232054338.png 718w\"\n            sizes=\"(max-width: 718px) 100vw, 718px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/8081ccf06a42519cf5d1dd0287094130/57dc1/image-20230621232054338.png\"\n            alt=\"image-20230621232054338\"\n            title=\"image-20230621232054338\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>It looks like the <code class=\"language-text\">read</code> function is reading <code class=\"language-text\">0x1e</code> bytes from <code class=\"language-text\">fd=0</code>, so we can tell that it receives data from standard input and passes it to the <code class=\"language-text\">check</code> function.</p>\n<p>The <code class=\"language-text\">check</code> function decompiled as follows.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 781px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/a837d1fb43a60f5e77b182d3e2bf89a5/7fee5/image-20230621233149319.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 95.83333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAACXBIWXMAAAsTAAALEwEAmpwYAAAClUlEQVQ4y6VUy04UQRSd30cNPljoggUbFizYsGChCxIQQwwhGmOMMUZxXj39mOmu96Orj7eqnWGAKIqV3FRXbvfpc869twbPtk6xsXGMR5snePL0FA8fHGPz8Wtsbb3B8xdn2N5+i52dc+zuXmBv7x3299/j4OADDg8/4uWrTzg6+oyTky84O/uK8/NvGEwmGYQEmGihuYWXDv3qbkXX3R2DLMuhpYflGt63sN5COZ2S91mDPC/Ba0PsmgTojYcxFiGEv2J0i+EszyFqAuEGzjuSTGw1AXbhn5gtFQ2m5CEXnjwk/5iDdQ6tJul01laTfAVrHRj5axtSojTlXCJgnAHXHL5tV6CpKJLFgvQveOvhlIMj4Cg7RCmho+flHtKegnJRyZJdAhyPp+RhZGRgg0VryUft4YO/n+RJBCTf5rmEnEnUskZNbNlUglccC85QzRekQKcOkFaiXZO4jBXD6XQKrQNmGU+ASio0jLzJ6AcNgSoLlimohYIwEqUok883AVcMh8MRmd579L8rMby8HIKxsJKxnJFrD7Qvi/CnuPKQWqTMBUQmyE+KOXk446gZ+SkayksIZmHiABgDRV2gFrGFDNlA32mB8ItQ8lCqFrMf9PGwRtlUBCZRjOeoqgpFXaPI5uCMQ1NbSU69SuDKkK+2jy7cKIqnDhHEsvO9dE+9FRz56ugc2tRCcf+td1iTPBpOqMrdunN3OH8FchMsMRwOx6kozvqUjp2fKh6upiCOdYx0ju+0/aRE1utgieF4NEmznE0Ymu8M+bwgHxnKkUie5k2JsmpQjitU5RyLYoGyZuAzyhexaDXZFNZmeTpBS+SKUsHQ8BuqXDQ/3ZFNfzcaqqwRscI0LfFq69p+ptvYv9dZ/gR8nsB+BXfpCAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/a837d1fb43a60f5e77b182d3e2bf89a5/8ac56/image-20230621233149319.webp 240w,\n/static/a837d1fb43a60f5e77b182d3e2bf89a5/d3be9/image-20230621233149319.webp 480w,\n/static/a837d1fb43a60f5e77b182d3e2bf89a5/42cfc/image-20230621233149319.webp 781w\"\n              sizes=\"(max-width: 781px) 100vw, 781px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/a837d1fb43a60f5e77b182d3e2bf89a5/8ff5a/image-20230621233149319.png 240w,\n/static/a837d1fb43a60f5e77b182d3e2bf89a5/e85cb/image-20230621233149319.png 480w,\n/static/a837d1fb43a60f5e77b182d3e2bf89a5/7fee5/image-20230621233149319.png 781w\"\n            sizes=\"(max-width: 781px) 100vw, 781px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/a837d1fb43a60f5e77b182d3e2bf89a5/7fee5/image-20230621233149319.png\"\n            alt=\"image-20230621233149319\"\n            title=\"image-20230621233149319\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>At a glance, it looked like an <code class=\"language-text\">angr</code> challenge, so I tried the following template.</p>\n<p>(Since the challenge name is <code class=\"language-text\">zzz</code>, maybe the intended solution was to solve the constraints with z3?)</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> angr\nproj <span class=\"token operator\">=</span> angr<span class=\"token punctuation\">.</span>Project<span class=\"token punctuation\">(</span><span class=\"token string\">\"chall\"</span><span class=\"token punctuation\">,</span> auto_load_libs<span class=\"token operator\">=</span><span class=\"token boolean\">False</span><span class=\"token punctuation\">)</span>\ninit_state <span class=\"token operator\">=</span> proj<span class=\"token punctuation\">.</span>factory<span class=\"token punctuation\">.</span>entry_state<span class=\"token punctuation\">(</span>args <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">'chall'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\nsimgr <span class=\"token operator\">=</span> proj<span class=\"token punctuation\">.</span>factory<span class=\"token punctuation\">.</span>simgr<span class=\"token punctuation\">(</span>init_state<span class=\"token punctuation\">)</span>\nsimgr<span class=\"token punctuation\">.</span>explore<span class=\"token punctuation\">(</span>find<span class=\"token operator\">=</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x401654</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> avoid<span class=\"token operator\">=</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token number\">0x4016ca</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4011a9</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># 出力</span>\nsimgr<span class=\"token punctuation\">.</span>found<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>posix<span class=\"token punctuation\">.</span>dumps<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>However, I could not recover the flag with the template above.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 527px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/1d0acec7dd3ffc49df920e356b9118ec/44385/image-20230621233255024.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 48.33333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAABTklEQVQoz62P207CQBRFG2PCzYJGE00s9Aq9TjuFlgYod7EKIVEQHpQH/v8ntqVRLIkhhviwcs6ZzKx9homqBIHcwMBsYUja6GpNBCJFqPrwygQOb8D16qB1CssmII4Nmzog1P4VZs45GAltRFIHE6GFUbmZECkhOjcO6pcq/JoLX6Xwqg4cwYDFqSAVPQmzef0AJuQ8bMdrfPQWWHrP2PSXeA9f8OZPsQpmydnKm2E7XGPTXaB76yK4MtEoarByEkhePoAZCwHmZIyp1serG+FBbGEit/FU6yX9o9JJ5qgaxj8JEN5RDOIlvGsDOivCLMowUjDNOE09u4eWqaB2zkHP8glaht/3P7MAsyDCyO2qlMhMNq6svIdxshJstgqzJMMqKUk9xm4L8wuD/ZamhDSvgBR2Fw+T/sL+TSqEoblYeHGaMC06Liyezr8LPwFExh/gZsrwQAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/1d0acec7dd3ffc49df920e356b9118ec/8ac56/image-20230621233255024.webp 240w,\n/static/1d0acec7dd3ffc49df920e356b9118ec/d3be9/image-20230621233255024.webp 480w,\n/static/1d0acec7dd3ffc49df920e356b9118ec/042cc/image-20230621233255024.webp 527w\"\n              sizes=\"(max-width: 527px) 100vw, 527px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/1d0acec7dd3ffc49df920e356b9118ec/8ff5a/image-20230621233255024.png 240w,\n/static/1d0acec7dd3ffc49df920e356b9118ec/e85cb/image-20230621233255024.png 480w,\n/static/1d0acec7dd3ffc49df920e356b9118ec/44385/image-20230621233255024.png 527w\"\n            sizes=\"(max-width: 527px) 100vw, 527px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/1d0acec7dd3ffc49df920e356b9118ec/44385/image-20230621233255024.png\"\n            alt=\"image-20230621233255024\"\n            title=\"image-20230621233255024\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>I suspect that was because I had not specified any constraints in <code class=\"language-text\">angr</code>.</p>\n<p>I was not very sure how to run <code class=\"language-text\">angr</code> with more detailed constraints, so I decided to use Z3Py instead, which was probably closer to the intended solution.</p>\n<p>Based on Ghidra’s decompiled output, I created a solver with the following constraints and was able to obtain the flag.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> z3 <span class=\"token keyword\">import</span> <span class=\"token operator\">*</span>\nflag <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>BitVec<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"flag[</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>i<span class=\"token punctuation\">}</span></span><span class=\"token string\">]\"</span></span><span class=\"token punctuation\">,</span> <span class=\"token number\">8</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\ns <span class=\"token operator\">=</span> Solver<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># 独自の制約を追加</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"0\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"0\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"b\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"z\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"{\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1e</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"}\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    s<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>And<span class=\"token punctuation\">(</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">>=</span> <span class=\"token number\">0x21</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;=</span> <span class=\"token number\">0x7e</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># 問題の制約</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">>></span> <span class=\"token number\">4</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x6</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>And<span class=\"token punctuation\">(</span>\n    <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">|</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x7a</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">&amp;</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x42</span><span class=\"token punctuation\">)</span>\n <span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1c</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> \ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>And<span class=\"token punctuation\">(</span>\n    <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">*</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3c0f</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    And<span class=\"token punctuation\">(</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">7</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x12e</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">7</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">*</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">-</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2a8a</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>And<span class=\"token punctuation\">(</span>\n    And<span class=\"token punctuation\">(</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">9</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">-</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">-</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">9</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1b</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xb</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x20</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    And<span class=\"token punctuation\">(</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xc</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xf</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xb</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xc</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xb4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xc</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xd</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xb9</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>And<span class=\"token punctuation\">(</span>\n    <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xd</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xe</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">-</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xd</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    And<span class=\"token punctuation\">(</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x11</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xd9</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x11</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xd</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    And<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xe</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xe</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">*</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>And<span class=\"token punctuation\">(</span>\n        And<span class=\"token punctuation\">(</span>\n            <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x12</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">'Z'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x12</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x13</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n            <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x15</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x13</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x14</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x7f</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x14</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x15</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x16</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x15</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x15</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">'_'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xb4</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> <span class=\"token operator\">~</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x17</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token operator\">-</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x19</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">9</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>And<span class=\"token punctuation\">(</span>\n    <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1a</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xd4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1c</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">while</span> s<span class=\"token punctuation\">.</span>check<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> sat<span class=\"token punctuation\">:</span>\n    m <span class=\"token operator\">=</span> s<span class=\"token punctuation\">.</span>model<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> flag<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span>m<span class=\"token punctuation\">[</span>c<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>as_long<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>end<span class=\"token operator\">=</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">break</span></code></pre></div>\n<h2 id=\"summary\" style=\"position:relative;\"><a href=\"#summary\" aria-label=\"summary permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Summary</h2>\n<p>This time I participated only lightly.</p>\n<p>I need to keep practicing.</p>","fields":{"slug":"/ctf-n00b-2023-en","tagSlugs":["/tag/ctf-en/","/tag/rev-en/","/tag/english/"]},"frontmatter":{"date":"2023-06-14","description":"A writeup for n00bzCTF 2023.","tags":["CTF (en)","Rev (en)","English"],"title":"n00bzCTF 2023 Writeup","socialImage":{"publicURL":"/static/50f46f466009e0596a247978b1f67f3c/ctf-n00b-2023.png"}}}},"pageContext":{"slug":"/ctf-n00b-2023-en"}},"staticQueryHashes":["251939775","401334301","825871152"]}