<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>REinject's Blog</title><link>https://reinject.top/en/</link><description>Recent content on REinject's Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 09 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://reinject.top/en/rss.xml" rel="self" type="application/rss+xml"/><item><title>Deep Dive into Copy Fail: Root Cause, Exploitation, and Detection of a Linux Page Cache Vulnerability</title><link>https://reinject.top/en/posts/linux-security/copy-fail-cve-2026-31431/</link><pubDate>Sat, 09 May 2026 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/linux-security/copy-fail-cve-2026-31431/</guid><description>CVE-2026-31431 deep dive: from an optimization commit in the AF_ALG crypto subsystem to a 9-year arbitrary file page cache overwrite vulnerability. Covers root cause analysis, kernel-level dynamic verification, 7 host privilege escalation paths, cross-tenant container attacks, and a generic detection scheme based on O_DIRECT + fanotify.</description></item><item><title>largebin attack</title><link>https://reinject.top/en/posts/ctf-pwn/heap/glibc/largebin_attack/</link><pubDate>Tue, 21 Jan 2025 17:33:23 +0800</pubDate><guid>https://reinject.top/en/posts/ctf-pwn/heap/glibc/largebin_attack/</guid><description>This article summarizes attack exploitation techniques related to the largebin.</description></item><item><title>unsortedbin attack</title><link>https://reinject.top/en/posts/ctf-pwn/heap/glibc/unsortedbin_attack/</link><pubDate>Thu, 16 Jan 2025 16:46:56 +0800</pubDate><guid>https://reinject.top/en/posts/ctf-pwn/heap/glibc/unsortedbin_attack/</guid><description>This article summarizes exploitation techniques related to the unsortedbin, including leaking libc addresses and UAF arbitrary address write examples.</description></item><item><title>Typora 1.9.5 Cracking</title><link>https://reinject.top/en/posts/reverse/cracking/typora_1_9_5_cracking/</link><pubDate>Tue, 14 Jan 2025 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/reverse/cracking/typora_1_9_5_cracking/</guid><description>Need to use Typora — let&amp;rsquo;s crack it ourselves.</description></item><item><title>Overwriting _IO_2_1_stdout to Leak libc Address</title><link>https://reinject.top/en/posts/ctf-pwn/leaklibc/overwrite__io_2_1_stdout_to_leak_libc/</link><pubDate>Wed, 08 Jan 2025 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/ctf-pwn/leaklibc/overwrite__io_2_1_stdout_to_leak_libc/</guid><description>&lt;p>PWN challenges almost always require the libc base address. Typically, you can obtain it by reading a libc API address filled in the program&amp;rsquo;s GOT table and calculating the base via relative offset. However, sometimes you can&amp;rsquo;t directly read the GOT. In such cases, if you have an arbitrary write primitive, you can leak the libc address by overwriting &lt;code>_IO_2_1_stdout&lt;/code>.&lt;/p>
&lt;p>The operation is fairly straightforward: set the &lt;code>flag&lt;/code> field at the beginning of the &lt;code>_IO_2_1_stdout&lt;/code> structure to &lt;code>0x00000000fbad1800&lt;/code>, modify the low byte of &lt;code>_IO_write_base&lt;/code> to a smaller value, then wait for the program to call &lt;code>puts&lt;/code> or &lt;code>printf&lt;/code> — the libc address will be leaked to stdout.&lt;/p></description></item><item><title>asadstory</title><link>https://reinject.top/en/posts/ctf-pwn/writeup/dasctf-challenge-202311/asadstory/</link><pubDate>Tue, 07 Jan 2025 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/ctf-pwn/writeup/dasctf-challenge-202311/asadstory/</guid><description>&lt;p>&lt;a href="./A_Sad_Story.zip">Challenge files&lt;/a>&lt;/p>
&lt;p>A simple stack overflow. As the Chinese saying goes: &amp;ldquo;Fortune is fickle — don&amp;rsquo;t look down on the young single dog!!!&amp;rdquo;&lt;/p></description></item><item><title>Inequable_Canary</title><link>https://reinject.top/en/posts/ctf-pwn/writeup/chb2024/inequable_canary/</link><pubDate>Tue, 07 Jan 2025 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/ctf-pwn/writeup/chb2024/inequable_canary/</guid><description>&lt;p>&lt;a href="./Inequable_Canary.7z">Challenge files&lt;/a>&lt;/p>
&lt;p>A malformed canary challenge.&lt;/p></description></item><item><title>ret2csu</title><link>https://reinject.top/en/posts/ctf-pwn/stack/ret2csu/</link><pubDate>Tue, 07 Jan 2025 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/ctf-pwn/stack/ret2csu/</guid><description>What is ret2csu? Nothing too fancy — learning ret2csu is about understanding the concept, not memorizing every detail.</description></item><item><title>Security Flags and Seccomp Sandbox</title><link>https://reinject.top/en/posts/ctf-pwn/protect/security_flag_and_seccomp/</link><pubDate>Tue, 07 Jan 2025 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/ctf-pwn/protect/security_flag_and_seccomp/</guid><description>A brief overview of common ELF protection mechanisms — essential knowledge for CTF PWN.</description></item><item><title>ezheap2</title><link>https://reinject.top/en/posts/ctf-pwn/writeup/chb2024/ezheap2/</link><pubDate>Mon, 06 Jan 2025 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/ctf-pwn/writeup/chb2024/ezheap2/</guid><description>&lt;p>&lt;a href="./ezheap2.7z">Challenge files&lt;/a>&lt;/p>
&lt;p>A heap exploitation menu challenge.&lt;/p></description></item><item><title>glibc all in one</title><link>https://reinject.top/en/posts/ctf-pwn/heap/glibc/glibc_all_in_one/</link><pubDate>Mon, 06 Jan 2025 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/ctf-pwn/heap/glibc/glibc_all_in_one/</guid><description>Using &lt;a href="https://github.com/matrix1001/glibc-all-in-one" rel="external nofollow" target="_blank">glibc-all-in-one&lt;/a> combined with &lt;a href="https://github.com/NixOS/patchelf" rel="external nofollow" target="_blank">patchelf&lt;/a> or the &lt;code>LD_PRELOAD&lt;/code> environment variable for fast glibc version switching.</description></item><item><title>glibc malloc/free Source Code Analysis</title><link>https://reinject.top/en/posts/ctf-pwn/heap/glibc/glibc_malloc_free_source_analysis/</link><pubDate>Sun, 05 Jan 2025 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/ctf-pwn/heap/glibc/glibc_malloc_free_source_analysis/</guid><description>This article analyzes Linux memory allocation and deallocation from the GLIBC source code. Understanding the relevant data structures and memory management mechanisms is fundamental to heap exploitation.</description></item><item><title>Installing pwntools on Mac</title><link>https://reinject.top/en/posts/ctf-pwn/pwntools/mac_install_pwntools/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/ctf-pwn/pwntools/mac_install_pwntools/</guid><description>Running into errors when installing pwntools on Mac — a common issue and its fix.</description></item><item><title>GDB Cheatsheet</title><link>https://reinject.top/en/posts/ctf-pwn/gdb_cheatsheet/</link><pubDate>Sat, 07 Dec 2024 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/ctf-pwn/gdb_cheatsheet/</guid><description>A summary of commonly used GDB commands.</description></item><item><title>Research on Triggers and Actions Data Structures of Scheduled Tasks in the Registry</title><link>https://reinject.top/en/posts/windows-security/persistence/windows_schedule_task_action_trigger_struct/</link><pubDate>Tue, 16 Jan 2024 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/windows-security/persistence/windows_schedule_task_action_trigger_struct/</guid><description>&lt;p>Win7 scheduled tasks didn&amp;rsquo;t have schtasks but used the legacy &lt;code>at&lt;/code> command, represented as files. Starting from Win8, the &lt;code>schtasks.exe&lt;/code> command appeared — the modern scheduled task service.&lt;/p>
&lt;p>Previously in &lt;a href="https://reinject.top/en/posts/windows-security/persistence/windows_schedule_task_internal/">Deep Dive into Windows Scheduled Tasks and Malicious Hiding Techniques&lt;/a>, I described the general meaning of some fields in the registry but didn&amp;rsquo;t research the specific content structures, especially the binary Triggers, Actions, and other fields.&lt;/p>
&lt;p>By referencing public materials and the &lt;a href="https://github.com/netero1010/GhostTask/" rel="external nofollow" target="_blank">GhostTask&lt;/a> project, I roughly outlined the differences in Triggers and Actions structures between Win8.1 and Win10, which may be useful later.&lt;/p></description></item><item><title>Deletion of Arbitrary File into Escalation of Privilege</title><link>https://reinject.top/en/posts/windows-security/vuln/lpe/deletion_of_arbitrary_file_into_eop/</link><pubDate>Wed, 25 Oct 2023 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/windows-security/vuln/lpe/deletion_of_arbitrary_file_into_eop/</guid><description>&lt;p>I recently saw a &lt;a href="https://twitter.com/AndrewOliveau/status/1701236395237392752" rel="external nofollow" target="_blank">tweet&lt;/a> from &lt;a href="https://twitter.com/AndrewOliveau" rel="external nofollow" target="_blank">@AndrewOliveau&lt;/a>. Just reading the description &amp;ldquo;arbitrary file deletions to SYSTEM&amp;rdquo; felt magical — an arbitrary file deletion vulnerability that can be turned into local privilege escalation. After reading through it with questions in mind, I found that the general approach leverages Windows&amp;rsquo; MSI installation rollback mechanism. Seeing &amp;ldquo;Config.Msi&amp;rdquo; felt very familiar, because two or three years ago I had deeply studied this and even crafted a custom MSI package to test it — it was awesome, but I didn&amp;rsquo;t take notes and forgot about it after having fun, so now this topic has resurfaced. However, this isn&amp;rsquo;t the main focus of the article; rather, it&amp;rsquo;s about &amp;ldquo;how to turn a fixed ordinary user file deletion into an arbitrary file deletion vulnerability.&amp;rdquo;&lt;/p></description></item><item><title>Windows Common Persistence Backdoor Hunting</title><link>https://reinject.top/en/posts/windows-security/persistence/windows_persistence_backdoor_hunting/</link><pubDate>Fri, 04 Nov 2022 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/windows-security/persistence/windows_persistence_backdoor_hunting/</guid><description>&lt;p>Cryptominers, ransomware, and certain rogue software frequently leverage scheduled tasks and WMI to periodically execute fileless backdoors or hijack browser homepages. How do you investigate these using PowerShell?&lt;/p></description></item><item><title>Hell's Gate</title><link>https://reinject.top/en/posts/windows-security/evasion/hells_gate/</link><pubDate>Fri, 29 Oct 2021 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/windows-security/evasion/hells_gate/</guid><description>Hell&amp;rsquo;s Gate is a direct syscall technique on Windows that can bypass most EDR hooks at the Ring3 layer. Some quick notes on the topic.</description></item><item><title>Hijacking Resin Request/Response via Filter Injection</title><link>https://reinject.top/en/posts/web-security/memshell/resin_filter_inject/</link><pubDate>Wed, 22 Sep 2021 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/web-security/memshell/resin_filter_inject/</guid><description>Injecting a filter-based memory shell in Resin to intercept and exfiltrate interface response data.</description></item><item><title>CVE-2021-36934 Windows 10 Local Privilege Escalation</title><link>https://reinject.top/en/posts/windows-security/vuln/lpe/cve-2021-36934/</link><pubDate>Fri, 23 Jul 2021 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/windows-security/vuln/lpe/cve-2021-36934/</guid><description>Overly permissive ACLs on multiple system files, including the SAM file, allow built-in regular user groups to access SAM under certain circumstances, leading to local privilege escalation.</description></item><item><title>CVE-2021-1732 Windows 10 Local Privilege Escalation Vulnerability</title><link>https://reinject.top/en/posts/windows-security/vuln/lpe/kernel/cve-2021-1732/</link><pubDate>Tue, 29 Jun 2021 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/windows-security/vuln/lpe/kernel/cve-2021-1732/</guid><description>The vulnerability exists in the Windows graphics driver &lt;code>win32kfull.sys&lt;/code>. When &lt;code>win32kfull!NtUserCreateWindowEx&lt;/code> is called to create a window with &lt;code>tagWND→cbWndExtra≠0&lt;/code>, the function calls &lt;code>win32kfull!xxxClientAllocWindowClassExtraBytes&lt;/code> to callback the user-mode function &lt;code>user32.dll!__xxxClientAllocWindowClassExtraBytes&lt;/code> for memory allocation. An attacker can hook this user-mode function and call &lt;code>ntdll!NtCallbackReturn&lt;/code> to return an arbitrary value to the kernel. When &lt;code>tagWND→flag&lt;/code> contains the 0x800 flag, this return value is treated as an offset relative to the kernel desktop heap base address. A user-mode call to &lt;code>NtUserConsoleControl&lt;/code> can modify &lt;code>tagWND→flag&lt;/code> to include 0x800, causing the return value to be used directly for heap memory addressing, triggering an out-of-bounds memory access. Through out-of-bounds read/write, an attacker can copy the SYSTEM process token to the current process to achieve privilege escalation.</description></item><item><title>CVE-2021-40449 win32kfull!GreResetDCInternal UAF Vulnerability</title><link>https://reinject.top/en/posts/windows-security/vuln/lpe/kernel/cve-2021-40449/</link><pubDate>Tue, 29 Jun 2021 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/windows-security/vuln/lpe/kernel/cve-2021-40449/</guid><description>Issues encountered during the CVE-2021-40449 UAF research process.</description></item><item><title>HMValidateHandle Technique</title><link>https://reinject.top/en/posts/windows-security/vuln/lpe/kernel/hmvalidatehandle/</link><pubDate>Fri, 18 Jun 2021 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/windows-security/vuln/lpe/kernel/hmvalidatehandle/</guid><description>&lt;p>The main content of this article is translated from: &lt;a href="https://theevilbit.github.io/posts/a_simple_protection_against_hmvalidatehandle_technique/" rel="external nofollow" target="_blank">https://theevilbit.github.io/posts/a_simple_protection_against_hmvalidatehandle_technique/&lt;/a>&lt;/p>
&lt;p>Looking at win32k exploitation techniques in recent years, the HMValidateHandle technique is used almost everywhere. I had an idea about how to prevent this type of exploitation, and this article discusses it.&lt;/p></description></item><item><title>Deep Dive into Windows Scheduled Tasks and Malicious Hiding Techniques</title><link>https://reinject.top/en/posts/windows-security/persistence/windows_schedule_task_internal/</link><pubDate>Mon, 11 Jan 2021 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/windows-security/persistence/windows_schedule_task_internal/</guid><description>&lt;p>Malware and attackers commonly use scheduled tasks as their persistence mechanism.&lt;/p>
&lt;p>From a threat detection perspective, understanding how scheduled tasks run and are created, as well as the processes associated with them, is essential.&lt;/p>
&lt;p>Additionally, this article investigates and explores an undisclosed scheduled task hiding technique.&lt;/p></description></item><item><title>From Shellcode to Buffer Overflow: A Practical Guide</title><link>https://reinject.top/en/posts/ctf-pwn/stack/from_shellcode_to_buffer_overflow_practical_experience/</link><pubDate>Wed, 16 Oct 2019 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/ctf-pwn/stack/from_shellcode_to_buffer_overflow_practical_experience/</guid><description>Learning stack overflow and shellcode through hands-on examples. (Notes from a long time ago — pretty outdated, take it or leave it.)</description></item><item><title>Representation of Basic Data Types in C++</title><link>https://reinject.top/en/posts/reverse/the_representation_of_basic_data_types_in_cpp/</link><pubDate>Fri, 26 Jul 2019 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/reverse/the_representation_of_basic_data_types_in_cpp/</guid><description>Process memory is like a palace in the dark — it&amp;rsquo;s hard to see what&amp;rsquo;s inside directly; you can only explore it corner by corner. This time I explore how C++ data structures are represented in memory, primarily summarized from &amp;lsquo;C++ Disassembly and Reverse Analysis&amp;rsquo;, with floating-point content from Chapter 2 of &amp;lsquo;Computer Systems: A Programmer&amp;rsquo;s Perspective&amp;rsquo;.</description></item><item><title>Unpacking Record: Nine-Layered Demonic Tower</title><link>https://reinject.top/en/posts/reverse/writeup/kctf-201710/unpacking_recored_of_the_nine_layered_demonic_structure/</link><pubDate>Mon, 15 Jul 2019 00:00:00 +0000</pubDate><guid>https://reinject.top/en/posts/reverse/writeup/kctf-201710/unpacking_recored_of_the_nine_layered_demonic_structure/</guid><description>&lt;h2 id="challenge-description">Challenge Description&lt;/h2>
&lt;p>This is Challenge #9 &amp;ldquo;Nine-Layered Demonic Tower&amp;rdquo; from the Kanxue.TSRC 2017 CTF Autumn Competition: &lt;a href="https://ctf.kanxue.com/game-fight-53.htm" rel="external nofollow" target="_blank">Challenge Link&lt;/a>&lt;/p>
&lt;p>MD5 of the exe file: b8b6bfe47a9c40117e2c6bbd5839f198&lt;/p></description></item></channel></rss>