日志
2021.3.24写了两个简单的NT和WDM驱动,了解了一下内存管理,感觉不难
2021.3.25了解了一下Windows内核函数,感觉还行
2021.3.26youtube找到侯捷老师的C++课程(高清 1080P C++面向对象高级编程(侯捷) P1 1 C++编程简介 - YouTube),感觉还不错,不拖泥带水
2021.3.27-28学习了c++,进度一般,周末打完球赛比较疲惫
Windows Kernel Pool Spraying
原文链接
池喷射介绍当你正尝试去攻击一个内核池(Pool)漏洞时,你将不得不处理许多数据块(chunk)和池数据(pool metadata)。数据块头部存在着不少检查,如果你想避免BSOD(蓝屏)的话,你必须去控制所有东西。池喷射(Pool Spraing)在池中是一门管理分配内存的艺术。这意味着你将可以知道什么时候一个数据块会被分配,还有周围有什么数据块。如果你想暴露一些精确的信息或者覆写特定的数据的话,这是必须的。本篇文章的意图不是深度阐述池的内部结构(internal),只是为了理解喷射技巧的你需要了解的基础知识。如果你需要关于池的本质的详尽信息,你应该阅读Tarjei Mandt的文章。基于同样的原因,我们将只讲述x64结构。所有在本文提及的东西基于Windows并且可以应用在Windows7到Windows10的每个版本。
池内部结构对于在Windows的每次分配来说,池是普通的。尽管池被经常使用,但它比简单的堆要复杂得多。池管理着每种类型的数据,从最简单的字符串到最大的结构体。即使池跟堆没有太大的不同,池也有自己的分配器和结构。运行中的Windows系统内核预留两个内存 ...
Pwn Environment
基础环境Ubuntu版本不需要太新,版本稳定就行,遇到问题利用搜索引擎也能轻易解决
VMware Pro 16
Ubuntu 18.04
常用软件安装vim强大的编辑器
1sudo apt install vim
安装git强大的github仓库管理神器
1sudo apt install git
安装python3参考链接
安装pip强大的python包管理器
1sudo apt install python3-pip
Pwn工具pwntoolspython2版本的pwntools
1234567sudo apt-get install python python-pip python-dev libssl-dev libffi-dev build-essentialpip install -U setuptoolspip install --upgrade pippip install --upgrade pwntools
python3版本的pwntools
12345apt-get updateapt-get install python3 python3-dev ...
The analysis of CVE-2010-2883
漏洞描述CVE-2010-2883是Adobe Reader和Acrobat的CoolType.dll库在解析字体文件SING表中的uniqueName项时存在的栈溢出漏洞,用户受骗打开特制的PDF文件就可能导致执行任意代码
调试环境
操作系统——Windows XP SP3
虚拟机——VMware Pro 16
反汇编器——IDA Pro 6.8
动态调试器——52OllyDbg
漏洞软件——Adobe Reader 9.3.4
JS提取工具——PdfStreamDumper
定位漏洞使用IDA的加载器加载CoolType.dll文件,按住shift+F12打开字符串窗口,ctrl+F搜索字符串可以发现”SING”字体
点击此项跳转到反汇编视图,左键单击选中字符数组,按住X查看到多处交叉引用
1234.rdata:0819DB4C ; char aSing[].rdata:0819DB4C aSing db 'SING',0 ; DATA XREF: sub_8015A91+D2o.rdata:0819DB4C ...
Python快速入门
注释单行注释:
12# !/usr/bin/python linux系统指定脚本使用的解释器# -*- coding=utf-8 -*- 编码方式
多行注释:
123456"""多行注释"""'''多行注释'''
输入input():从控制台获取输入的值,该值传递给变量时为字符串
1234>>> str = input('请输入一个字符串:')请输入一个字符串:123>>> str'123'
内置类型对象分类数字、字符串、列表、字典、元组、文件、集合
数字分类常见数字常量:整数(int),浮点数(float),2/8/16进制,复数,集合,小数与分数,布尔(bool)和常量
常用进制转换函数:hex()(转16进制)、bin()(转2进制)、oct()(转8进制)
数学工具表达式操作符:+、-、*、/、//、%、<<、>>、&、|、!等等
...
反调试花指令
反调试之花指令花指令是一种反静态调试的手段(对于动态调试来说就没有任何用处),我们可以通过在程序的代码中添加一些不影响程序运行的垃圾数据,进而影响反汇编结果的准确性,达到程序保护的目的
花指令分类1、可执行花指令
见字知其意,即花指令在程序正常运行的时候被执行,不影响程序原有的功能
2、不可执行花指令
见字知其意,即花指令在程序正常运行的时候不会被执行,不影响程序原有的功能
花指令编写原则:保持堆栈的平衡
常用花指令汇编小知识:
1234567891011mov eax, 1 eax赋值为1pop 1 将1从栈顶弹出pop ebp 将栈顶的值弹出赋给寄存器ebppush 1 将1压入栈中push ebp 将ebp的值压入栈中add eax, 1 eax的值加1inc eax eax的值加1dec eax eax的值减1call [x] 调用地址为x的函数,call对应的硬编码为0xE8jmp x 跳转到x地址处,jmp对应的硬编码为0xE9_emit 相当于db,byte类型,1字节
以下方式均通过内联汇编实现
标签方式 ...