kali缓冲区溢出笔记

mac2025-08-24  7

缓冲区溢出 当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被”撑爆”,从而覆盖了相邻内存区域的数据; 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果 如何发现漏洞 源码审计 逆向工程 模糊测试 向程序堆找半随机的数据,根据内存变化判断溢出 数据生成器:生成随机,半随机数据 测试工具:识别溢出漏洞

windows缓冲区溢出 FUZZER 使用到的软件:SLMail 5.5.0 Mail Server、ImmunityDebugger_1_85_setup.exe、mona.py 两种防止缓冲区溢出防护机制:DEP:阻止代码从数据页被执、ASLR:随机内存地址加载执行程序和DLL,每次重启地址变化 SLMail的POP3服务的PASS指令参数有缓冲区溢出漏洞 EIP 寄存器存放下一条指令的地址 2700个字符实现EIP寄存器溢出 找到精确溢出的4 个字节 • 唯一字串法 • usr/share/metasploit-framework/tools/pattern_create.rb 2700 思路: • 将 EIP 修改为shellcode代码的内存地址,将Shellcode写入到该地址空间,程序读取EIP 寄存器数值,将跳转到 shellcode 代码段并执行; 不同类型的程序、协议、漏洞,会将某些字符认为是坏字符,这些字符有固定用途 • 返回地址、Shellcode、buffer中都不能出现坏字符 • null byte (0x00) 空字符,用于终止字符串的拷贝操作 • return (0x0D) 回车操作,表示POP3 PASS 命令输入完成 • 思路:发送0x00 —— 0xff 256个字符,查找所有坏字符 重定向数据流:用ImmunityDebugger里的mono查找系统自带的内存地址固定(重启也不变)的没有安全机制的dll里存在JMP ESP的内存地址位置,将此内存地址存进EIP 生成shellcode:使用msfpayload可以生成各种功能的shellcode regsnap Windows注册表抓取工具,通过改动系统设置前后注册表的快照比较,找出设置对应的注册表位置 可以通过rdesktop工具图形化远程控制windows桌面

linux缓冲区溢出 CROSSFIRE1.9.0版本接受入站socket连接时存在缓冲区溢出漏洞 寻找具体发送多少个字符时会让EIP充满所发内容 发现ESP中只能存放7个字符 发现EAX中可存放大量内容,但前12个字符是命令 解决方法是EIP到ESP;ESP命令内容为EAX偏移12(add eax, 12),JMP EAX 注意查找坏字符 调试工具:edb 需要参数–run加上需要运行的程序 需要点两次run 使用opcode search,选择本程序,搜索ESP->EIP代码地址

选择和修改exp代码 网上公开的exp代码 选择可信赖的EXP源:exploit-db、securityfocus、searchsploit 有能力修改exp(python、perl、ruby、从、c++) 网上下载的exp会有这些问题:返回地址与我们的环境不符、反弹shell硬编码了回连IP地址、缓冲区偏移量与我们的环境不符、目标IP硬编码 避免有害的exp,例如shellcode不是应该的功能而是删除自己电脑上的所有程序 扫描探测目标系统版本,搭建适当的测试环境,避免一锤子测试,不能这次连上目标主机,下次就不行了

后漏洞利用阶段 上传工具、提权、擦除攻击痕迹、安装后门以便:长期控制、DUMP密码、内网渗透 后漏洞利用阶段最大的挑战——防病毒软件,使用合法的远程控制软件 上传工具有: TFTP FTP VBSCRIPT POWERSHELL DEBUG:先在Linux下运行wine exe2bat.exe nc.exe nc.txt,随后将nc.txt里的内容在windows的shell里粘贴并debug<123.hex(此文件要小于64K字节,)、copy 1.dll nc.exe。

最新回复(0)