<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>x86_32 - Tag - cdpointpoint Hugo Site</title>
        <link>http://example.org/tags/x86_32/</link>
        <description>x86_32 - Tag - cdpointpoint Hugo Site</description>
        <generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>cdpointpoint@gmail.com (cdpointpoint)</managingEditor>
            <webMaster>cdpointpoint@gmail.com (cdpointpoint)</webMaster><lastBuildDate>Sat, 17 Jun 2023 00:00:00 &#43;0000</lastBuildDate><atom:link href="http://example.org/tags/x86_32/" rel="self" type="application/rss+xml" /><item>
    <title>Ropemporium x86_32 pivot</title>
    <link>http://example.org/x32_07_pivot_readme/</link>
    <pubDate>Sat, 17 Jun 2023 00:00:00 &#43;0000</pubDate>
    <author>cdpointpoint</author>
    <guid>http://example.org/x32_07_pivot_readme/</guid>
    <description><![CDATA[pivot Introduction Le challenge est décrit ainsi sur le site ropemporium
But why
To &ldquo;stack pivot&rdquo; just means to move the stack pointer elsewhere. It&rsquo;s a useful ROP technique and applies in cases where your initial chain is limited in size (as it is here) or you&rsquo;ve been able to write a ROP chain elsewhere in memory (a heap spray perhaps) and need to &ldquo;pivot&rdquo; onto that new chain because you don&rsquo;t control the stack.]]></description>
</item>
<item>
    <title>Ropemporium x86_32 fluff</title>
    <link>http://example.org/x32_06_fluff_readme/</link>
    <pubDate>Fri, 16 Jun 2023 00:00:00 &#43;0000</pubDate>
    <author>cdpointpoint</author>
    <guid>http://example.org/x32_06_fluff_readme/</guid>
    <description><![CDATA[fluff Introduction Le challenge est décrit ainsi sur le site ropemporium
Working backwards
Once we&rsquo;ve employed our usual drills of checking protections and searching for interesting symbols &amp; strings, we can think about what we&rsquo;re trying to acheive and plan our chain. A solid approach is to work backwards: we&rsquo;ll need a write gadget - for example mov [reg], reg or something equivalent - to make the actual write, so we can start there.]]></description>
</item>
<item>
    <title>Ropemporium x86_32 bad chars</title>
    <link>http://example.org/x32_05_badchars_readme/</link>
    <pubDate>Thu, 15 Jun 2023 00:00:00 &#43;0000</pubDate>
    <author>cdpointpoint</author>
    <guid>http://example.org/x32_05_badchars_readme/</guid>
    <description><![CDATA[bad chars x86_32 Introduction Le challenge est décrit ainsi sur le site ropemporium
The good, the bad Dealing with bad characters is frequently necessary in exploit development, you&rsquo;ve probably had to deal with them before while encoding shellcode. &ldquo;Badchars&rdquo; are the reason that encoders such as shikata-ga-nai exist. When constructing your ROP chain remember that the badchars apply to every character you use, not just parameters but addresses too. To mitigate the need for too much RE the binary will list its badchars when you run it.]]></description>
</item>
<item>
    <title>Ropemporium x86_32 write4</title>
    <link>http://example.org/x32_04_write4_readme/</link>
    <pubDate>Wed, 14 Jun 2023 00:00:00 &#43;0000</pubDate>
    <author>cdpointpoint</author>
    <guid>http://example.org/x32_04_write4_readme/</guid>
    <description><![CDATA[write4 Description Le site nous dit :
Things have been rearranged a little for this challenge; the printing logic has been moved into a separate library in an attempt to mitigate the alternate solution that is possible in the callme challenge. The stack smash also takes place in a function within that library, but don&rsquo;t worry this will have no effect on your ROP chain.
Important! A PLT entry for a function named print_file() exists within the challenge binary, simply call it with the name of a file you wish to read (like &ldquo;flag.]]></description>
</item>
<item>
    <title>Ropemporium x86_32 callme</title>
    <link>http://example.org/x32_03_callme_readme/</link>
    <pubDate>Tue, 13 Jun 2023 00:00:00 &#43;0000</pubDate>
    <author>cdpointpoint</author>
    <guid>http://example.org/x32_03_callme_readme/</guid>
    <description><![CDATA[callme x86_32 Introduction Cette fois ci on doit appeller trois fonctions succesivement avec des parametres attendus. En x86 32 bits, les paramètres étant passé sur la pile la construction de la Ropchaine est différente qu&rsquo;en 64 bits
Découverte Execution ropemporium/x32/callme$ ./callme32 callme by ROP Emporium x86 Hope you read the instructions... &gt; AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Thank you! Exiting Analyse ### La fonction vulnérable
gef➤ disas pwnme Dump of assembler code for function pwnme: 0x080486ed &lt;+0&gt;:	push ebp 0x080486ee &lt;+1&gt;:	mov ebp,esp 0x080486f0 &lt;+3&gt;:	sub esp,0x28 0x080486f3 &lt;+6&gt;:	sub esp,0x4 0x080486f6 &lt;+9&gt;:	push 0x20 0x080486f8 &lt;+11&gt;:	push 0x0 0x080486fa &lt;+13&gt;:	lea eax,[ebp-0x28] 0x080486fd &lt;+16&gt;:	push eax 0x080486fe &lt;+17&gt;:	call 0x8048540 &lt;memset@plt&gt; 0x08048703 &lt;+22&gt;:	add esp,0x10 0x08048706 &lt;+25&gt;:	sub esp,0xc 0x08048709 &lt;+28&gt;:	push 0x8048848 0x0804870e &lt;+33&gt;:	call 0x8048500 &lt;puts@plt&gt; 0x08048713 &lt;+38&gt;:	add esp,0x10 0x08048716 &lt;+41&gt;:	sub esp,0xc 0x08048719 &lt;+44&gt;:	push 0x804886b 0x0804871e &lt;+49&gt;:	call 0x80484d0 &lt;printf@plt&gt; 0x08048723 &lt;+54&gt;:	add esp,0x10 0x08048726 &lt;+57&gt;:	sub esp,0x4 0x08048729 &lt;+60&gt;:	push 0x200 0x0804872e &lt;+65&gt;:	lea eax,[ebp-0x28] 0x08048731 &lt;+68&gt;:	push eax 0x08048732 &lt;+69&gt;:	push 0x0 0x08048734 &lt;+71&gt;:	call 0x80484c0 &lt;read@plt&gt; 0x08048739 &lt;+76&gt;:	add esp,0x10 0x0804873c &lt;+79&gt;:	sub esp,0xc 0x0804873f &lt;+82&gt;:	push 0x804886e 0x08048744 &lt;+87&gt;:	call 0x8048500 &lt;puts@plt&gt; 0x08048749 &lt;+92&gt;:	add esp,0x10 0x0804874c &lt;+95&gt;:	nop 0x0804874d &lt;+96&gt;:	leave 0x0804874e &lt;+97&gt;:	ret End of assembler dump.]]></description>
</item>
<item>
    <title>Ropemporium x86_32 split</title>
    <link>http://example.org/x32_02_split_readme/</link>
    <pubDate>Mon, 12 Jun 2023 00:00:00 &#43;0000</pubDate>
    <author>cdpointpoint</author>
    <guid>http://example.org/x32_02_split_readme/</guid>
    <description><![CDATA[split x86_32 Introduction. Dans ce second exercice on doit passer une argument à la fonction appelée. L&rsquo;argument est présent dans le programme.
La démarche est la même qu&rsquo;en x86 64 avec deux différences.
la taille des registres est de 32 bits donc la sauvegarde de ebp occupe 4 bytes au lieu de 8 en 64 bits. Le passage des paramètre s&rsquo;effectue exclusivement sur la pile. Analyse On regarde le code de la fonction pwnme :]]></description>
</item>
<item>
    <title>Ropemporium x86_32 ret2win</title>
    <link>http://example.org/x32_01_ret2win_readme/</link>
    <pubDate>Sun, 11 Jun 2023 00:00:00 &#43;0000</pubDate>
    <author>cdpointpoint</author>
    <guid>http://example.org/x32_01_ret2win_readme/</guid>
    <description><![CDATA[ret2win Introduction. Cette article démarre une série consacrée à la résolution des challenges ropemporium. Avec la version X86 donc 32 bits.
Pour rappel, l&rsquo;execution de cette série nécessite l&rsquo;installation des librairies 32 bits.
sudo apt install libc6-i386 Découverte. Le programme a le même comportement que le programme x86_64.
ret2win# ./ret2win32 ret2win by ROP Emporium x86 For my first trick, I will attempt to fit 56 bytes of user input into 32 bytes of stack buffer!]]></description>
</item>
</channel>
</rss>
