Python绝技:运用Python成为顶级黑客>>>>笔记及心得体会[2]

今天想记录下栈溢出这个东西,这也是我弄了好几遍的,虽然很老但原理应该是逐步清晰了。

DEP

先谈谈DEP这东西,能进行栈溢出也是因为没搞DEP,DEP是什么?DEP是数据执行保护,DATA Executive Protect。基本原理是将数据所在的内存页标记为不可执行,当程序产生溢出,恶意代码试图在数据段执行指令时,CPU会产生异常而不去执行指令。微软在XP2就已经实现了DEP,在计算机属性->性能->数据保护里面就有这个选项,但默认只保护windows的系统软件之类的,第二个选项你可以选,那今天这个针对FTP的栈溢出就GG了。

栈溢出

这应该是Python绝技这本书里面所说的编写自己的0day,我今天对于这个的记录是综合了一些内容的,不单单只是这本书里的东西。

环境准备

一台XP虚拟机,一台Kali虚拟机。
xp上安装freefloatFTP 1.0,这个FTP软件就是我们用来栈溢出的,软件在接收一个很长的包的时候就会溢出,Ollydbg是一个逆向分析的软件,用于观察内存栈的信息,设置断点来更好分析程序的跳转。
kali里面则是用到了几个rb写的脚本,用来生成不重复的字节流啊等。
在国内我们有破解的Ollydbg,在国外我们就需要使用mona这样开元的东西了。我这样的小白还对版权啊什么的不了解,能用就行。

几个概念

EIP:指令指针寄存器;
ESP:栈顶指针寄存器;
EBP:栈底指针寄存器。
大端小端:网络字节序一般是大端,也就是内存高位在上,小端就是低位在上,我们会在程序报错和Ollydbg中看到小端的内存地址,我们在Python网络编程中则要调整成大端,后面会标注。

正式开始

我们在虚拟机XP中开启FTP服务,然后开启Ollydbg监控它。
在这里插入图片描述
而后我们就对它发起猛攻,为什么会发现这个溢出,就是我们在尝试连接这个FTP服务的时候,我们在输入账号可以无限长度,但一直没有溢出的原因是数据包只传了70几个,这个我们可以用wireshark抓到,这里就不做演示了。我们发起的第一轮攻击就是一个用Python写的socket程序,对着这个FTP服务发500个A 做为用户名。

import socket
buff = '\x41' * 500
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
target = '192.168.3.64'
s.connect((target, 21))
s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值