inline hook是通过patch原始执行流,将执行流程重定向到自定义逻辑,从而实现对目标行为的监控或修改 无论是通过E8还是E9进行跳转 都是要修改内存的 这样十分容易被检测 这里介绍硬件hook 什么是硬件断点 首先我们先了解什么是软件断点 在某个地址上下软件断点的时候 会向该地址注入一个int 3指令(0xcc) cpu遇到之后就会查idt进index为3的中断门 硬件断点也是类似的 先
方法 比赛中的加密方法都是单字节或者多字节进行加密,因此我们可以使用字节爆破的方法进行解决 方法一 exit返回下标 原理就是通过exit返回得到比对成功的下标值,以此作为当前字节或者字节组合是否正确的依据 例题为吾杯ctf re的love题目 这题目进行修改前还需要进行一些操作,可以看到当前段是需要解密的,我们可以依据函数调用的时候前面进行对栈的操作反堆得到需要异或的值 idc脚本 #inc
原理 沙箱禁用write的时候可以通过shellcode逐位爆破,先将flag读到栈上,再依次爆破栈上每一位的内容,通过cmp比较的结果跳转到死循环,再根据接收数据的时间差判断是否进入死循环 shellcode 遍历字符集 在flag出现的字符种类较少的时候使用,直接cmp判断相同的时候跳到死循环,即je,此时字符集中的顺序会影响效率 for i in range (len(flag),50):
简介 本来想要写一篇WinAPi规避技术中的IAT隐藏的,虽然已经有类似的文章,不过好在对方并没有将这个技术做到极致,按照另一篇文章的做法根本不足以隐藏IAT表。因为Windows的CRT运行时库仍然会带有大量的奇奇怪怪的API,包括GetModuleHandle和GetPorcAddress。并且还会残留大量的字符串硬编码在可执行文件中。 CRT库删除 在Visual Studio中,可以改变原
title: "off by one off by null漏洞学习" author: "kkup008" date: "2024-12-23" # YYYY-MM-DD tags: ["off by one", "堆的基础", "libc中堆的溢出", "off by null"] # 文章标签 off by one And off by null 1. off by one漏洞介绍 of
dirty_pagetable 附件: mowenroot/Kernel 参考: Dirty Pagetable 学习 & 例题 - Henry Martin Cross Cache Attack技术细节分析 https://yanglingxi1993.github.io/dirty_pagetable/dirty_pagetable.html https://ptr-yudai.ha
内核回调 MSDN中内核回调的介绍如下 内核的回调机制为驱动程序提供了一种在满足某些条件时请求和提供通知的常规方法 windows提供了如下函数来进行注册 PsSetCreateProcessNotifyRoutine PsSetCreateProcessNotifyRoutineEx PsSetCreateThreadNotifyRoutine PsRemoveCreateThreadNotif
前言 本文的目标是通过 PE 文件注入实现点击扫雷程序弹出 PE injected 窗口,与参考文章的区别在于:本文使用的程序是 64 位并且开了地址随机化,所以注入的方式有所不同 文章示例程序下载地址:https://github.com/chengsluo/Mine-Sweeper/blob/master/%E6%89%AB%E9%9B%B7.exe 前置基础 在Windows 64位(Win
基于house_of_botcake的绕过tcachebin保护的攻击 tcache新增保护机制 在glibc刚加入tcache机制时,也就是2.27版本下,tcache几乎没有保护机制,在后续的2.31版本,加入的对于double free的检测,也就是当一个chunk被放入tcachebin中的时候,其bk指针处会被设置为tcache_key,每次程序把 new free chunk 放入 t
hook 什么是hook 用于拦截函数的执行过程,以获取或修改其执行时的数据 更改执行流程的一种技术 大体分两种 修改函数代码和修改函数地址 InlineHook 第一种我们称之为INLINE HOOK(内联hook) 它的特点是直接修改目标函数的代码,例如在函数入口处插入跳转指令,将控制流引导至自定义的处理逻辑,从而实现对函数行为的拦截和修改 32位下patch 目标函数前7个字节 目的是替换成
1 序 Vec 是 Rust 中一个强大且广泛使用的动态数组类型,Vec<T> 是基于动态数组实现的,可以存储多个同类型的元素,并且在需要时动态扩容。 1.1 底层结构 在底层,Vec 使用了一块连续的内存来存储元素。其核心结构如下: 指针(ptr):指向存储元素的内存块的起始地址。 长度(len):表示当前 Vec 中实际存储的元素数量。 容量(capacity):表示当前 Vec
序 io_uring 是 Linux 于 2019 年加入到内核的一种新型异步 I/O 模型,它提供了高性能的异步I/O操作,io_uring的目标是通过减少系统调用和上下文切换的开销来提高I/O操作的性能。io_uring通过使用环形缓冲区和事件驱动的方式来实现高效的异步I/O操作。io_uring的设计使得应用程序可以同时处理大量的I/O操作,从而提高系统的吞吐量和响应速度。因此io_urin
House Of Corrosion 与 House Of Husk的交叉利用 House Of Corrosion 此类攻击方式主要是通过攻击main_arena结构体中的fastbinY数组来实现利用的 pwndbg> p main_arena $1 = { mutex = 0, flags = 0, have_fastchunks = 0, fastbins
1. 基础知识 1.1 Linux 进程内存布局 Linux 系统在装载 elf 格式的程序文件时,会调用 loader 把可执行文件中的各个段依次载入到从某一地址开始的空间中(载入地址取决于 link editor(ld) 和机器地址位数,在 32 位机器上是 0x8048000,即 128M 处)。以 32 位机器为例,首先被载入的是 .text 段,然后是 .data 段,最后是 .bss
线程劫持(Thread Hijacking)是指攻击者通过某种方式劫持线程的执行流从而执行shellcode的技术 线程劫持的核心思想是利用暂停目标线程、修改上下文来控制其执行流 线程上下文 在了解线程劫持之前 我们得先知道什么是线程上下文 线程上下文指的是一个线程在执行时所需的所有信息集合 包括线程的寄存器和堆栈 可以通过GetThreadContext来获取线程上下文 第二个参数要求指定Co