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

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

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

通过这个漏洞进行缓冲区漏洞测试 pass存在缓冲区漏洞  对寄存器中内容作出精确的修改 修改的寄存器EIP ESP EDP EIP 是重点关注的eip eip

 eip里面存放的是cpu下一次要执行的指令地址 执行里面的代码

 

发现eip 足够大 修改EIP的内容成为esp的地址

同时将esp里面的内容修改成为代码 然后cpu读取eip的地址 就会执行esp里面的代码内容 可以通过脚本来找到shellcode的代码空间

寻找可以存放shellcode的内存空间 尝试在esp里面存放shellcode的代码

修改esp里面的内容 假设esp里面可以存放3500个字符 看看到底有多少个c字符可以到达esp寄存器里面 判断esp寄存大小能不能存放shellcode的的大小

通常一般小巧的shellcode也需要300个字节左右

估计思路 

坏字符 :z在做模糊测试 不同的协议 不同的应用程序 不同的类型的漏洞在做模糊测试找到他的漏洞 尝试对他攻击的过程中 因为程序和协议的不同有一些个字符是在缓冲区里面不能使用的 这些字符因为程序 和应用程序不同也就不同 有的协议可能过滤0a 或者过滤0b 或者遇到0c就崩溃 所以 这些字符我们成为坏字符 是不能出现在缓冲区内存空间里面的 另外也有一些字符在缓冲区里面是有特殊的定义的 这些字符的出现困可能代表着一种用途 所以 向esp注入shellcode的必须要将这些坏的字符找出来 避免shellcode里面出现坏字符 导致shellcode 不能正常工作

所以 挑出来

已知的

查看 计算机寄存器里面存放的是ascll码 16进制数表示 不同的编码表示不同的字符 而ascll编码在计算机中一个字符有一个字节来表示 一个字节用二进制表示0000 0000 最大1111 1111

之间有多少种可能字符 有二进制字符计算一下 2的8次方+2的0次方 一共是255中可能的字符加全0 256中可能都是字符 通过脚本将这256个字符全部打到esp寄存器里面 看那些字符被过滤 出现问题  回头写shellcode 避免出现这些字符

没有出现切后面字符都没有代表这个字符不能出现在缓冲区里面 另外一种就是没有出现但是后面的字符出现代表被过滤掉啦

[展开全文]

·寻找坏字符

不同类型的程序、协议、漏洞,会将某些字符认为是坏字符,这些字符有固定用途

• 返回地址、Shellcode、buffer中都不能出现坏字符

• null byte (0x00) 空字符,用于终止字符串的拷贝操作

• return (0x0D) 回车操作,表示POP3 PASS 命令输入完成

• 思路:发送0x00 —— 0xff 256个字符,查找所有坏字符

• 0x0A

• 0x0D

[展开全文]

fuzzing

将 EIP 修改为shellcode代码的内存地址,将Shellcode写入到该地址空间,程序读取EIP 寄存器 数值,将跳转到 shellcode 代码段并执行;

发送0x00---0xff256个字符,查找坏字符

[展开全文]
hippo · 2018-05-19 · FUZZING思路 0