CVE-2017-11882原理、复现和Poc解析利用
影响版本
Office 365
Microsoft Office 2000
Microsoft Office 2003
Microsoft Office 2007 Service Pack 3
Microsoft Office 2010 Service Pack 2
Microsoft Office 2013 Service Pack 1
Microsoft Office 2016
漏洞原理分析:参考文章:CVE-2017-11882 漏洞分析总结
注:没给链接的工具可以网上搜搜,很多的
定位漏洞程序
打开能弹出计算器的poc文档:
使用processhacker分析进程状态,发现calc由cmd打开,但是cmd却没有父进程,这不正常,至少有一个程序负责拉起cmd
使用pchunter查找父进程得到其PID但是找不到具体是什么
重新打开poc文档,pchunter得到PID + process monitor的树形控件定位到cmd父进程为EQNEDT32.exe
注册表新建ENQEDT32.EXE并设置x32dbg为即时调试器(详细方法看文末的 ...
c++结课小结
期末周终于结束了哭唧唧~明天考完C++就正式进入暑假啦!
对象所占据的空间只是用于存放数据成员,函数成员不计入,函数的代码在内存中只占据一份空间
使用复制构造函数的情形:
用类的一个对象去初始化另一个对象时 当函数的形参是类的对象时(也就是值传递时),如果是引用传递则不会调用 当函数的返回值是类的对象时
未定义复制构造函数系统会自动给出,并且会执行: 浅复制(复制对象在内存中的每一个bit)
浅复制是在复制这个对象的时候,让数据中的新旧对象指向同一个外部内容,析构的时候容易发生重复释放 深复制是在复制这个对象的时候,为数据中的对象制作了外部对象的独立复制。
复制构造函数有且仅有一个
123456// 复制构造,在定义对象的时候'='是传参的意思A a; A b(a) // 等价于 A b=a; // 赋值A a, b; b = a;
函数名后面加const表示为常函数,在该函数当中不可以修改变量
1int getx() const { return x; }
函数参数尽量使用常引用而不是值 ...
比特串求解排名第k位的数据
前言最近听一个学长讲了如何利用比特串求解排名第k位的数据,觉得还挺巧妙的
分析下面以求解排名第k位和成绩第k小(即倒数排名为k)的学生成绩为例解释算法思路:
录入学生成绩后,将成绩转换为比特串,规则如下:
定义一个容量为101的整型数组存放比特串并初始化为0,学生成绩为n则数组下标为n的数据置1(0≤n≤100,故数组容量定为101)
例如:一个容量为6数据为2的数组按上述规则应为{0, 0, 1, 0, 0, 0}
将每个学生成绩的比特串逐列相加,得到一个聚合后的比特串
例如:{0, 0, 0, 1, 0, 0} 与 {1, 0, 0, 0, 0, 0}聚合后为{1, 0, 0, 1, 0, 0}
要得到排名为k(成绩相同认为排名相同)的学生成绩,只需要定义一个初值为0的sum,从高位下标向低位下标依次加上聚合比特串数组的数据,直到sum ≥ k,对应的下标就是排名为k的学生成绩
同理:要得到第k小的学生成绩,我们可以定义一个初值为0的sum,从低位下标向高位下标依次加上聚合比特串数组的数 ...
C++填空题汇总
题目
1.
除了可以通过对象名来引用静态成员,还可以使用类名引用静态成员。
2.
在C++中,每个类都有一个隐含的指针叫做this指针,该指针指向正在被成员函数操作的对象。
3.
在C++中,对象引用做函数参数要比对象指针做参数更普通。
4.
在常成员函数中,const是函数类型的一部分,在函数声明和函数定义部分都要有该关键字。
5.
常数据成员的值必须初始化且不能改变,因此在类中声明常数据成员时,只能通过构造函数成员初始化列表的方式来实现。
6.
静态数据成员初始化必须在类外进行。
7.
纯虚函数是一种特别的虚函数,它没有函数的函数体部分,也没有为函数的功能提供实现的代码,它的实现版本必须由派生类给出,因此纯虚函数不能是友元函数
8.
动态联编对函数的选择不是基于指针或者引用,而是基于对象,在编译、链接过程中无法解决的绑定问题要等到程序开始运行之后再确定
9.
按照联编所进行的阶段不同,可分为两种不同的联编方法:静态联编和动态联编
10.
强制类型转换是通过强制类型转换运算符来实现的
11.
函数重载和运 ...
自定义数组类
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165#include <cassert>#include <iostream>#include <stdexcept>using namespace std;#define size_a 10# ...