摘要:
其实做驱动或者说底层安全的最大问题就是没有合适的资料去参考,网上很难找到想要的信息。比如搭建驱动环境我以前一直用的都是WDK7.1基于控制台去编译的,之前尝试过搭建WDK10+VS2015的组合环境,但是没有成功也嫌麻烦懒得去配,这次就腾出时间来搭好环境顺带分享一下。 Ok,不需要我来分享了,在论坛 阅读全文
摘要:
因为没写过FSD过滤驱动,所以拿来练练手,没有什么技术含量。参考自Win内核安全与驱动开发。 先梳理一下大概的流程,就是怎么去绑定设备栈、怎么去过滤各种请求的。 首先肯定是要绑定设备栈的,来看下怎么绑定的设备栈。 先确定绑定的对象是什么,文件系统的设备是分两个部分的,分别是卷设备和控制设备。其中,卷 阅读全文
摘要:
比赛打完了,来继续搞了,因为那个主动防御正在写,所以想找找思路正好想到可以来逆向一下PT的驱动模块看看pt大大是怎么写的程序。 PT x64版本的驱动模块是这个kEvP64.sys。 0x0 先来看看DriverEntry 函数的26、27行把程序的注册表目录的字符串保存到了局部数组中,然后又存在了 阅读全文
摘要:
之前没有分析PWN400,现在再开一篇文章分析一下。 这个日志是我做题的一个笔记,就是说我做一步题就记录一下是实时的。所以说可能会有错误之类的。 首先程序是经典的笔记本程序,基本上一看到这种笔记本就知道是考堆了吧~ 功能选单也是很经典。。。。 那我们也按照套路来看看,首先是看下new note功能, 阅读全文
摘要:
1.保护机制 这个就是所谓的堆指针的check。 FD其实就是p->fd BK其实就是p->bk 就是说:p->fd->bk=p p->bk->fd=p 就是做这么一个验证。 这个验证找一个指向堆的指针就可以绕过,但是要知道指针变量的地址,否则就是白扯。 为了触发unlink,需要伪造一个(2个)新 阅读全文
摘要:
ZCTF的pwn赛题分析, PWN100 这道题与SCTF的pwn100玩法是一样的,区别在于这个要过前面的几个限制条件。不能触发exit(0)。否则就不能实现溢出了。 依然是触发canary来leak出内存中的flag。 note1 这次ZCTF的题是以一个系列出的,以下三个题都是同一个程序。 首 阅读全文
摘要:
pwn200 漏洞给的很明显,先是读到了main的局部数组中,然后在子函数中向子函数的局部数组栈里复制。 总体思路是leak system的地址,然后再向一个固定地址写入/bin/sh,最后执行system函数 leak使用pwn库的DynELF实现,整体使用rop链。 这里是把数据复制过来,但是他 阅读全文
摘要:
x64中的前六个参数依次保存在RDI, RSI, RDX, RCX, R8和 R9中 r13 =rdx=arg3 r14 =rsi=arg2 r15d=edi=arg1 r12= call address 这段gadgets用于在X64下进行rop,根本原因是X64使用寄存器传参无法直接用栈进行ro 阅读全文
摘要:
之前在drop看过一篇文章,是西电的Bigtang师傅写的,这里来学习一下姿势做一些笔记。 0x01 基础知识 Linux ELF文件存在两个很重要的表,一个是got表(.got.plt)一个是plt表(.plt)。这些存在的原因是ELF文件使用了延迟绑定的技术。当我们调用一个函数时,如果这是第一次 阅读全文
摘要:
Re1 是一个简单的字符串加密。程序使用了多个线程,然后进行同步。等加密线程加密好了之后才会启动验证线程。这个题比较坑的是IDA F5出来的结果不对,不知道是不是混淆机制。 刚开始看的是F5后的伪代码,一脸懵逼。后来看了下汇编才明白是怎么回事。 解密直接打表就可以,也可以写逆算法。 pwn1 用ch 阅读全文