avatar
Articles
47
Tags
0
Categories
12

qianmu's blog
Search

qianmu's blog

Pwntools
Created2024-03-09|PWN
基于pwntools编写pwn代码背景pwntools是一个CTF框架和漏洞利用开发库,用Python开发,由rapid设计,旨在让使用者简单快速的编写exploit。 1.Pwntools安装及模块(已装) 1)安装 安装命令:pip install –upgrade pwntools 安装完毕后在python环境下只需使用 from pwn import * 即可导入 这会将大量的功能导入到全局命名空间,然后我们就可以直接使用单一的函数进行汇编、反汇编、pack,unpack等操作。 2)常用模块如下 asm:汇编与反汇编,支持x86/x64/arm/mips/powerpc等基本上所有的主流平台 dynelf:用于远程符号泄漏,需要提供leak方法 elf:对elf文件进行操作 gdb:配合gdb进行调试 memleak:用于内存泄漏 shellcraft:shellcode的生成器 tubes:包括tubes.sock,tubes.process, tubes.ssh, tubes.serialtube,分别适用于不同场景的PIPE ut ...
获取系统信息
Created2024-03-09|Windows Kernel
获取系统信息DriverEntry1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071typedef NTSTATUS(NTAPI* LPFN_RTLGETVERSION)( OUT PRTL_OSVERSIONINFOW OsVersionInfo);typedef enum{ UNKNOWN_VERSION = 0, WIN2000_VERSION, WINXP_VERSION, WIN2003_VERSION, WINVISTA_VERSION, WIN7_VERSION, WIN8_VERSION, WIN8_VERSION_1, WIN8_VERSION_1_9600, WIN10_VERSION, WIN10_VERSION_10240, WIN10_VERSION_10586 ...
获取卷信息
Created2024-03-09|Windows Kernel
获取卷信息使用内核链表和快速互斥体。 快速互斥体不支持递归获取,也就是不允许自己线程重复获取。 一般互斥体只其他线程,自己线程可以多次取得。 1234567891011FAST_MUTEX __VolumeInfoLock;LIST_ENTRY __VolumeInfoList;void InitializeVolumeInfo(){ ExInitializeFastMutex(&__VolumeInfoLock); InitializeListHead(&__VolumeInfoList); EnumVolumeInfo();} 枚举卷信息从A盘开始,将路径转为UnicodeString,再转到OA,调用ZwCreateFile获取卷句柄,调用ZwQueryObject获取对象信息,插入数据结构中。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657void EnumVo ...
缓冲区溢出漏洞
Created2024-03-09|PWN
缓冲区溢出漏洞实战记录脚本背景缓冲区溢出 缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。理想的情况是:程序检查数据长度并不允许输入超过缓冲区长度的字符,但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹配,这就为缓冲区溢出埋下了隐患。 操作系统所使用的缓冲区,又被称为”堆栈”。在各个操作进程之间,指令会被临时储存在“堆栈”中,“堆栈”也会出现缓冲区溢出。 缓冲区溢出的危害:在当前网络与分布式系统安全中,被广泛利用的50%以上都是缓冲区溢出,其中最著名的例子是1988年利用fingerd漏洞的蠕虫。而缓冲区溢出中,最为危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害是:一种情况是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码,比如得到shell,然后为所欲为。 MS12-020漏洞 微软于2012年3月12日发布安全公告,公布了MS12-020漏洞,漏洞级别为严重,这个级别是微软所有漏洞级别的最高级别,意即会对服务和企业运营造成巨大损失。 这 ...
PWN实战
Created2024-03-09|PWN
PWN一般溢出背景主机/home/test/1目录下有一个pwn1程序,执行这个程序的时候可以输入数据进行测试,pwn1程序会输出Please try again.的提示信息,请对pwn1程序进行逆向分析和调试,找到程序内部的漏洞,并构造特殊的输入数据,使之输出Congratulations, you pwned it.信息。 12345678910111213141516171819#include <stdio.h>int main(int argc, char** argv){ int modified; char buffer[64]; modified = 0; gets(buffer); // 引发缓冲区溢出 if (modified != 0) { printf("Congratulations, you pwned it.\n"); } else { printf(" ...
过滤FastIO
Created2024-03-09|Windows Kernel
过滤FastIO过滤驱动就是挂载在一般驱动,比如磁盘驱动上,拦截IRP、FastIO请求,并有选择的过滤。 FastIO和IRP类似,一般比IRP要复杂,如果对FastIO全部拒绝,可以让驱动走IRP,这也是一般的过滤方法。 遍历FSD驱动派遣函数与Hook检测 - 知乎 (zhihu.com) FSD(File System Drivers)位于系统底层,是和磁盘驱动最近的地方。它平时存在感不强,但由于本身身处要地,所以经常被各种恶意程序、安全软件以及其他怀有各种纯洁和不纯洁目的的应用盯上。 初始化FastIO派遣例程在wdm中有对FAST_IO_DISPATCH的定义,申请一个这样的结构,并填充其中的内容 1234567891011121314151617181920212223242526272829303132333435363738int InitializeFastIo( FAST_IO_DISPATCH** FastIoDispatch) //这是一个二维指针 { //申请一个结构指针 FAST_IO_DISPATCH* v5 = NUL ...
从注册表获取驱动程序路径
Created2024-03-09|Windows Kernel
从注册表获取驱动程序路径123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990BOOLEAN LoadWorkPath() { //驱动是由服务加载 KMD.exe NTSTATUS Status; OBJECT_ATTRIBUTES ObjectAttributes; HANDLE KeyHandle; KEY_VALUE_PARTIAL_INFORMATION* v5 = NULL; ULONG v7, ResultLength; UNICODE_STRING RegPath; UNICODE_STRING ValueName; UNICODE_STRING v10 = { 0, 0, NULL }; B ...
创建控制设备对象与Ring3交互
Created2024-03-01|Windows Kernel
创建一个控制设备对象123456789101112131415161718192021222324252627282930313233343536373839404142434445//创建一个控制设备对象 (Ring3.exe交互)DEVICE_OBJECT* CreateDevice(WCHAR* DeviceName, WCHAR* LinkName, DRIVER_OBJECT* DriverObject, BOOLEAN IsDeviceExclusive){ NTSTATUS Status; UNICODE_STRING v1; UNICODE_STRING v2; DEVICE_OBJECT* DeviceObject = NULL; //一维指针 PDEVICE_EXTENSION DeviceExtension; //设备扩展的指针 ???????????? RtlInitUnicodeString(&v1, DeviceName); RtlInitUnicodeString(& ...
ROP技术实战
Created2024-03-01|PWN
ROP实战ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等) ROP是一种攻击技术,其中攻击者使用堆栈的控制来在现有程序代码中的子程序中的返回指令之前,立即间接地执行精心挑选的指令或机器指令组。 ret2win背景ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等) ROP是一种攻击技术,其中攻击者使用堆栈的控制来在现有程序代码中的子程序中的返回指令之前,立即间接地执行精心挑选的指令或机器指令组。 因为所有执行的指令来自原始程序内的可执行存储器区域,所以这避免了直接代码注入的麻烦,并绕过了用来阻止来自用户控制的存储器的指令的执行的大多数安全措施。 因此,ROP技术是可以用来绕过现有的程序内部内存的保护机制的。 ROP要完成的任务包括要完成的任务包括:在内存中确定某段指令的地址,并用其覆盖返回地址。有时目标 ...
Radare入门
Created2024-03-01|PWN
Radare入门到进阶基本信息radare2是一个开源的逆向工程和二进制分析框架,包括反汇编、分析数据、打补丁、比较数据、搜索、替换、虚拟化等等,同时具备超强的脚本加载能力,它可以运行在几乎所有主流的平台(GNU/Linux, .Windows *BSD, iOS, OSX, Solaris…)并且支持很多的cpu架构以及文件格式。 radare2工程是由一系列的组件构成,这些组件可以在 radare2 界面或者单独被使用–比如我们将要在接下来实验中使用到的rahash2, rabin2, ragg2三个组件,所有这些组件赋予了 radare2 强大的静态以及动态分析、十六进制编辑以及溢出漏洞挖掘的能力。 Kali已经自带radare2 我们可以输入-h查看帮助,i开头的命令主要用来获取各种信息,A系列的命令用于分析文件 r2 框架里最强的一个工具 :rabin2. rabin2 可以获取包括ELF, PE, Mach-O, Java CLASS文件的区段、头信息、导入导出表、字符串相关、入口点等等,并且支持几种格式的输出文件.我们可以使用它来获取二进制文件的基本信息 ...
123…5
avatar
qianmu
Articles
47
Tags
0
Categories
12
Follow Me
Announcement
This is my Blog
Recent Post
Frida2024-03-18
使用WindowsAPI在Ring3进行系统操作2024-03-18
arm和thumb2024-03-18
获取Ntdll函数与NtOS服务信息2024-03-09
APC注入2024-03-09
Categories
  • AI2
  • Algorithms3
  • Android2
  • Basic2
  • C++4
  • Crypto3
  • MySQL1
  • PWN8
Archives
  • March 202420
  • February 202413
  • April 20237
  • March 20237
Info
Article :
47
UV :
PV :
Last Push :
©2020 - 2024 By qianmu
Framework Hexo|Theme Butterfly
Search
Loading the Database