<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Reverse-Engineering on Adamino CTF Writeups</title><link>https://ctf.adamino.dk/tags/reverse-engineering/</link><description>Recent content in Reverse-Engineering on Adamino CTF Writeups</description><generator>Hugo</generator><language>en</language><copyright>Adamino 2023</copyright><lastBuildDate>Sun, 23 Aug 2026 14:30:00 +0100</lastBuildDate><atom:link href="https://ctf.adamino.dk/tags/reverse-engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>Matching the Remote with Docker (glibc pinning)</title><link>https://ctf.adamino.dk/tools/pwn/matching-glibc-docker/</link><pubDate>Sun, 23 Aug 2026 14:30:00 +0100</pubDate><guid>https://ctf.adamino.dk/tools/pwn/matching-glibc-docker/</guid><description>&lt;h1 id="matching-the-remote-with-docker-glibc-pinning-for-pwn"&gt;Matching the Remote with Docker: glibc Pinning for Pwn&lt;a href="#matching-the-remote-with-docker-glibc-pinning-for-pwn" class="anchor" aria-hidden="true"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
 stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"&gt;&lt;/path&gt;
 &lt;line x1="8" y1="12" x2="16" y2="12"&gt;&lt;/line&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Here&amp;rsquo;s the failure mode that eats hours: your exploit works flawlessly on your machine, then does nothing against the remote. Nine times out of ten the culprit is the &lt;strong&gt;C library&lt;/strong&gt;. libc offsets — the distance from a leaked &lt;code&gt;puts&lt;/code&gt; to &lt;code&gt;system&lt;/code&gt;, from &lt;code&gt;system&lt;/code&gt; to a &lt;code&gt;/bin/sh&lt;/code&gt; string, the exact &lt;code&gt;one_gadget&lt;/code&gt; constraints — are &lt;em&gt;specific to the exact glibc build&lt;/em&gt; on the target. Your local Ubuntu&amp;rsquo;s libc is almost never byte-identical to the challenge&amp;rsquo;s.&lt;/p&gt;</description></item><item><title>Ghidra</title><link>https://ctf.adamino.dk/tools/reversing/ghidra/</link><pubDate>Sun, 23 Aug 2026 14:15:00 +0100</pubDate><guid>https://ctf.adamino.dk/tools/reversing/ghidra/</guid><description>&lt;h1 id="ghidra-reading-a-binary-like-source-code"&gt;Ghidra: Reading a Binary Like Source Code&lt;a href="#ghidra-reading-a-binary-like-source-code" class="anchor" aria-hidden="true"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
 stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"&gt;&lt;/path&gt;
 &lt;line x1="8" y1="12" x2="16" y2="12"&gt;&lt;/line&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://ghidra-sre.org/"&gt;Ghidra&lt;/a&gt; is the free, open-source reverse-engineering suite released by the NSA. Its headline feature is a genuinely excellent &lt;strong&gt;decompiler&lt;/strong&gt; that turns compiled machine code back into readable C-like pseudocode — for most challenges it&amp;rsquo;s the difference between squinting at assembly for an hour and reading the logic in five minutes. It&amp;rsquo;s the tool I reach for first on any reversing binary, and it&amp;rsquo;s what cracked &lt;em&gt;Go Go Decompile&lt;/em&gt; in the Brunner 2026 set.&lt;/p&gt;</description></item><item><title>pwntools &amp; checksec</title><link>https://ctf.adamino.dk/tools/pwn/pwntools/</link><pubDate>Sun, 23 Aug 2026 14:00:00 +0100</pubDate><guid>https://ctf.adamino.dk/tools/pwn/pwntools/</guid><description>&lt;h1 id="pwntools--checksec-the-binary-exploitation-workbench"&gt;pwntools &amp;amp; checksec: The Binary Exploitation Workbench&lt;a href="#pwntools--checksec-the-binary-exploitation-workbench" class="anchor" aria-hidden="true"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor"
 stroke-width="2" stroke-linecap="round" stroke-linejoin="round"&gt;
 &lt;path d="M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"&gt;&lt;/path&gt;
 &lt;line x1="8" y1="12" x2="16" y2="12"&gt;&lt;/line&gt;
&lt;/svg&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;If you do any amount of binary exploitation, &lt;a href="https://github.com/Gallopsled/pwntools"&gt;pwntools&lt;/a&gt; is the library that turns a fiddly, error-prone process into a few readable lines of Python. It handles the plumbing — spawning the target, talking to it over a socket, packing addresses into the right byte order, parsing leaked pointers — so you can spend your brain on the actual bug. &lt;code&gt;checksec&lt;/code&gt;, which ships alongside it, is the thirty-second triage you run &lt;em&gt;first&lt;/em&gt; on every binary to know what you&amp;rsquo;re up against.&lt;/p&gt;</description></item></channel></rss>