Rgzz's Record

知道的越多,不知道的越多。

0%

[TOC]

DEP 机制的保护原理

溢出攻击的根源在于计算机未明确区分数据和代码,DEP(数据执行保护,Data Execution Prevention)的基本原理就是将数据所在页面标识为不可执行。 image-20220618160130800

[TOC]

SafeSEH 对异常处理的保护原理

SafeSEH的原理

在程序调用异常处理函数前,对要调用的异常处理函数进行一系列的有效性校验,当发现异常处理函数不可靠时终止异常处理函数的调用。SafeSEH 需要操作系统和编译器的双重支持,二者缺一都会降低 SafeSEH 的保护能力。

[toc]

基础知识

二进制文件概述

PE文件格式

PE(Portable Executable)是 Win32 平台下的可执行文件(如:"*.exe","*.dll"),PE文件规定了所有信息(二进制机器代码、字符串、菜单、图标、位图、字体等)在可执行文件中如何组织。

[toc]

《操作系统》同步互斥

引起同步互斥问题的原因

​ 当下人们需要让进程在短时间内同时完成不止一件事情,每个线程处理各自独立的任务。线程是进程的更小分支,每一线程完成进程的一部分任务,但系统并不给线程分配任何资源,它共享创建它的进程所拥有的资源。但是当一个线程修改变量时,其它线程在读取这个变量时可能读取到不一致的值,无法区分到底是读取了修改前的值,还是修改后的值,导致了程序执行结果无法复现,所以就引入了同步互斥,来解决进程内的资源分配问题。

[toc]

GS 安全编译选项的保护原理

实现版本

针对缓冲区溢出时覆盖函数返回地址这一特征,微软在vs2003(vs 7.0)及以后的版本中,默认启用了 GS 编译选项。Project→project Properties→Configuration Properties→C/C++→Code Generation→Buffer Security Check 中设置GS。 image-20220503195855795

[TOC]

格式化漏洞

printf 中的缺陷

printf 的参数:格式控制符和待输出的数据列表

1
2
3
4
5
6
7
#include "stdio.h"
main()
{
	int a=44,b=77;
	printf("a=%d,b=%d\n",a,b);
	printf("a=%d,b=%d\n");
}

对于上述的代码,第二个 printf 缺少了待输出的数据列表,它运行后会输出什么呢?

[toc]

狙击 Windows 异常处理机制

S.E.H 概述

S.E.H 即异常处理结构体(Structure Exception Handler),它包含两个DWORD指针:S.E.H链表指针和异常处理函数句柄。 image-20220418093731897

如果你不了解堆的话,请先看我的上一篇博文《堆的工作原理》,然后再来学习堆溢出,结合食用,更易理解。

[TOC]

堆溢出利用(上)—— DWORD SHOOT

链表“拆卸”中的问题

堆管理系统三类操作:堆块分配、堆块释放、堆块合并。

[toc]

apt 软件包管理服务

apt命令负责安装,更新,删除和管理基于Ubuntu和Debian的系统的软件包。

安装软件包

1
2
 
sudo apt install [package name1] [package-name2] [package-name3]

卸载软件包

这是使用apt命令从我们的系统中删除程序或服务的语法。