无题
1.裸函数
1 | void __declspec(naked) test() |
裸函数就是不让编译器进行自动填充的内容。
每个函数之间都有间隔,如果裸函数中间不添加任何东西,就会报错。因为被调用的时候会跳到俩个函数之间的间隔:CC CC
2.段权限规则 代码段 数据段 堆栈
R0 :操作系统内核层,调度硬件资源管理
1环 2环:现在已经舍弃,但他们是接口层,执行体,操作系统服务层
3环:应用层
硬件资源就规划好了,段就是资源的划分,资源被划分也就是权限被划分了。
CS段和SS段 这2个段的权限则可以说明,处于R0还是R3。所以在提权的时候,需要将CS和SS一起都改了。
看权限的话,看一个即可。
DPL:Descriptor privilege level 描述权限等级
CPL:Current privilege level 当前权限等级
RPL:request privilege level,请求权限等级(可以乱给)
普通数据段下,RPL没有效果
堆栈段 (SS) RPL == CPL == DPL 才能更改
代码段(CS)CPL == DPL
练习:
首先连接器->高级->随机地址禁用。
1 |
|
利用这个代码可以将CS改成= 004B
jmp far 到底是什么?为什么0x48 -> 0x4b 呢?
你可能会问:为什么呢?
此过程中,段选择器的值并不直接被赋值给 CS
寄存器,而是经过计算或解析后确定的段属性被加载到 CS
中。
&F8。不懂就去看2.段探测
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Safety-Blog!