写的不好多加指教
准备环境:
总体步骤:
使用python脚本测试来连接
运行结果:
root@kal:/test# ./01.py
说明连接pop3成功.....
windows端要用immunity debugger打开slmail服务
打开immunity ==> file ==> attach ==>选择下面的那一行
点右下角的attach,然后开始运行,运行时候,右下角的pause会变成running状态
这时运行下面脚本:
运行情况:
当执行到2700时。发现在也不动了,看一下windows状况,右下角已经出现了pase,已经停止了,在2600个字符发完之后还能发送,但是到了2700发送完之后就连接不上了,说明缓冲区溢出临界点发生在2600-2700之间。
利用metasploit生成唯一字符串,发送:
root@kal:/test# /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 2700
重启windows的服务,immunity需要重新打开然后attach,让服务运行起来
修改上面的python继续发送:
运行脚本,观察windows停止时eip的位置
用metasploit模块求出偏移量:
得知偏移量是2606,说明eip的位置在第2607-2610处
重启windows服务,编写下面脚本
服务再次暂停,这时发现eip处的位置变成4个c,说明确定eip的位置是正确的。
查看存放c的个数
可以看到下图,计算大概存放了400多个c,足够存放一个shellcode
理想状况就是,将eip的内容修改成esp的地址,esp如果放置的是shellcode此时就会被执行,但是每次esp的地址不同,不能直接修改。这时,我们需要利用系统中自带的 jmp esp 帮我们跳转到esp位置,去执行shellcode
首先将mona模块导入immunity中的pycommands中
启动服务,将immunity打开attach上服务。
查看系统的所有模块
需要选择前4个是false的,最后一个是true的。就只有三四个,但是其中只有slmfc.dll模块中含有 jmp esp
其中 \xff\xe4 是汇编语言中的 jmp esp,可以通过kali工具翻译
输入十六进制需要加上 \x 。后面就以第一个作为jmp esp
双击查找的第一个 jmp esp,就可以看到地址是 5f4a358f
接着上面的地址设置断点
发送下面的脚本:
启动服务,发送脚本
右下角会显示执行到断点处,停止
这时按下f7单步执行
就可以看到,已经跳转到esp,里面装的43 也即是c
说明跳转成功了。
重启服务。
编写下面脚本‘’
#!/usr/bin/python
发送脚本,在windows端
通过上图可以看到0x0a的字符缺失,并且之后的字符也有丢失,那么我们改掉0x0a继续发送一遍
可以看到,我们踢掉0a之后,后面字符串就可以显示了,说明0a是个坏字符。\x0d也没有显示出来,以及\x00
这样就找到三个坏字符0x00 0x0d 0x0a
构造反弹shell
编写脚本:
上面的\x90 代表nop,不执行,目的是防止后面的shellcode因为其他原因缺失前面几个字节。
打开windows服务,用kali监听4444端口,然后发送脚本,得到一个反弹shell。