默认计划
931人加入学习
(9人评价)
安全测试缓冲区溢出

购买过Kali Linux渗透测试、武官课程包、安全技术会员课程的学员不要再买此课程

价格 ¥ 300.00
该课程属于 高校公益行 | 网络安全实践训练营 请加入后再学习

接下来 一切顺利 就是数据的重定向啦 吧EIP里面内容改成ESP的地址 cpu就会读取ESP里面的代码啦 我们只需要将shellcode的代码存放在ESP中 在cpu就会理论上到这个ESP里面读取内容开始执行后门程序就开始 达到控制目标机器上啦 看似很简单 但是实际情况是非常复杂的 因为每次计算机重启的时候 或者程序运行的过程 进行地址分配的过程中这个esp的地址是变化 有可能一样 有可能不一样

理论上地址是随机的原因就在可能这台计算机处于空闲的状态 较为理想的状态

变通的思路 

在内存中找到操作系统固定的这一模块 xp自带的模块 而且还在内存中固定的这一模块 无论重启 或者进行多少次程序 都不变

系统模块里面有大量的指令 就有可能出现JMP ESP的指令 汇编代码 

目的是找到系统固定不变的模块 在找到系题掉用JMP ESP 指令地址的地址 因为他的地址是固定不变的()饶了一个湾子

就是在EIp里面存放内存地址固定不变的系统模块里面JMP ESP的指令所在的内存地址在执行esp里面代码部分内容 多调用一部

在内存可能存在好几跳 需要monna这个脚本

输入其他调试默认脚本

首先要关心的就是rebase :表示操作系统重启 重启之后表示操作系统内存地址是否发生变化

发生变化就是true

后面就是内存保护机制 要选的那个模块最好就是没有被操作系统保护的模块 如果受到保护 每一次调用这个地址 都会随机生成地址 没办法确定下一次这个地址在什么地方 就 必须是没有办法利用这个漏洞 os动态调用库必须是true· 我们要必须要选择每一个操作系统自带的库 只有这样才能在不同的机器上 每个机器都有这样的库 那我就可以好利用

下一步就是查找这个模块里面有没有JMP ESP这个命令 如果没有 那我们也就利用不了

把汇编指令转换成为二级制因为这些都是底层 每一个字节都要用\x表示

找不到就得想起他办法做溢出啦

如果说 应用程序收到deb的保护 那么在寻找模块  的基地址存放的内容 必须有 RE 权限的  否则后面的跳转就不会执行

找到这个地址 那么就设置一个端点 程序执行到这个断点 由用户决定程序下一步如何进行判断

目的 为了通过py的脚本向程序法溢出的代码看看溢出的代码跑到内存的地址是不是正常的进行跳转

[展开全文]

把EIP的内容改成ESP的地址

 

SLMail 线程应用程序,操作系统为每个线程分配一段地址范围,每个线程地址范围不确定

Rebase ->False

OS这一列必须是True

cd /usr/share/metasploit-framework/tools/

./nasm_shell.rb               //把汇编语言转换成二进制

jump esp -> FFE4  \xff\xe4

!mona find -s "\xff\xe4"-m openc32.dll

[展开全文]

问题:寄存器地址会变化

方法:

在内存中寻找地址固定的系统模块

寻找JMP ESP指令跳转

调用mona.py文件  打开模块

!mona modules

筛选模块

Rebase:重启后内存地址是否发生变化(这里找False)

RSLR:是否受保护

找符合  前四个False,OS为True  的模块

将(JMP ESP)指令转换为二进制(FFE4)

cd /usr/share/metasploit-framework/tools
./nasm_shell.rb

调用mona.py文件  输入命令

!mona find -s "\xff\e4" -m openc32.dll(模块名称)

若无(JMP ESP)指令,换模块继续查找

若找到,选择一个双击,在数据部分切换成汇编语言格式

点击工具栏“m”打开内存地图

注意,若程序支持DEP,则要挑选Access权限为 “R E”的模块

在(JMP ESP)指令处设置断点

开始运行

[展开全文]