备注 by jhonguy:

char recvBuf[5000]={0}; 
recv(sockConn,recvBuf,5000,0); 
char sendBuf[10]={0}; 
sendBuf声明在recvBuf后,通常离ebp越远(当然这个也有可能不是这样,这要看编译器的处理,不过我用vc6编译的时候,是离ebp远的),要想覆盖到栈帧中的数据,这就需要给sendBuf复制跨越recvBuf更多的数据,而你socket接收的数据最多就是recvBuf的大小,当然如果这个recvBuf到retaddr之间的局部变量没有存在0值的数据,strcpy才有可能覆盖到栈帧,如果存在0值数据,那怎么样都覆盖不到这个函数的栈帧的。
arg1
retaddr          -------------------------
ebp                                   |
other loc var               more then 5000
recvBuf[5000]                   |
sendBuf[10]  -------------------------

所以要比较方便能够溢出,最好把char sendBuf[10]={0};放在recvBuf[5000]之前,这样sendBuf 就会距离栈底近,而且距离远远小于5000。


配合该echo服务端程序,以及反调试工具(代码见我另外的帖子http://blog.csdn.net/yatere/article/details/7307266),可以研究下远程漏洞开发和shellcode的原理。

可以用nc或者下面py脚本来测试这个echo服务器,使用调试工具监控服务器端异常。

import socket
mys=socket.socket()
mys.connect(('192.168.1.100',9999))
mys.send(b'A'*9999)
b=mys.recv(9999)
print (b.decode())

vc6源码:

编译好的exe:

http://howfile.com/file/2611e8a1/98aca589/

#include "stdafx.h"
#include <stdio.h>
#include <WinSock2.h>
#pragma comment (lib,"ws2_32.lib")
int main()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(9999);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
printf("正在监听端口:%d\n",9999);
listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(1)
{
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char recvBuf[5000]={0};
recv(sockConn,recvBuf,5000,0);
char sendBuf[10]={0};
strcpy(sendBuf,recvBuf);
printf("%s",sendBuf);
_asm{
mov eax,eax;
mov eax,eax;
mov eax,eax;
}
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
closesocket(sockConn);
}
return 0;
}

使用我另外一个pydbg脚本捕捉出错时候的信息截图如下:提示 thread 1228 访问异常  没有覆盖eip,覆盖了ebp以及seh,以前都是关于利用覆盖eip的,这次需要再研究下了。

用于溢出漏洞研究的Socket服务端程序相关推荐

  1. 【★更新★】高性能 Windows Socket 服务端与客户端组件(HP-Socket v2.0.1 源代码及测试用例下载)...

    HP-Socket 以前为某大型通信项目开发了一套通用 Windows Socket TCP 底层通信组件,组件代号为 HP-Socket.现在把 HP-Socket 的所有代码向大众公开,希望能对大 ...

  2. C# Socket服务端与客户端通信(包含大文件的断点传输)

    步骤: 一.服务端的建立 1.服务端的项目建立以及页面布局 2.各功能按键的事件代码 1)传输类型说明以及全局变量 2)Socket通信服务端具体步骤:   (1)建立一个Socket   (2)接收 ...

  3. 《零基础看得懂的C语言入门教程 》——(十三)socket服务端编写

    一.学习目标 了解C语言的socket的概念 了解C语言socket的使用方法 完成C语言socket服务端 目录 C语言真的很难吗?那是你没看这张图,化整为零轻松学习C语言. 第一篇:(一)脱离学习 ...

  4. java web启动socket_javaweb启动时启动socket服务端代码实现

    这篇文章主要介绍了javaweb启动时启动socket服务端代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 说明:在javaweb项目启动的 ...

  5. C++ as3 socket服务端

    C++winsocket服务端,Flex as3客户端.服务端Bind绑定IP127.0.0.1端口2020,在Flex中使用Socket.connect向服务器发起链接.当Flex在本地运行的时候能 ...

  6. 封装网络通信 socket 服务端和客户端

    文章目录 1.C++封装的socket 服务端 1.1 代码示例 1.2 代码解析 1.2.1 成员变量 1.2.2 成员函数 1.2.3 构造函数和析构函数 1.2.4 服务端类解析 2.C++封装 ...

  7. Python 套接字-判断socket服务端有没有关闭的方法实例演示,查看socket运行状态

    通过 getattr(socket, '_closed') 的返回值可以判断服务端的运行状态. True 是关闭状态,False 是运行中. 实例代码展示: import socketip = 'lo ...

  8. Java:socket服务端,socket服务端支持多连接,socket客户端,socket客户端支持发送和接受

    一.Java之socket服务端 新建一个Java工程 命名 给他先创建一个类 在类里面我们做一个main 这里面也需要,创建套接字,IP号,端口号 但是java中有一个类         Serve ...

  9. php socket(服务端与客户端)demo

    php socket(服务端与客户端)demo完整演示: 环境是:[phpstydy,PHP版本7.3.4nts],一定要开启[sockets]服务. 服务器[index.php](源码复制即可): ...

最新文章

  1. iMeta:已被谷歌学术(Google Scholar)收录
  2. Catch Me If You ... Can't Do Otherwise--转载
  3. MyBatis-Plus 高级功能 —— 自动填充功能
  4. xib和storyboard小谈,
  5. VTK:相互作用之Picking
  6. 计算机程序的思维逻辑 (12) - 函数调用的基本原理
  7. Hibernate的核心组件简单介绍
  8. springboot日志配输出路径配置_Spring Boot 日志配置方法(超详细)
  9. 专访尤雨溪:先别管4.0了,Vue CLI重构了解一下
  10. 最初语音识别率只有60%,如今坐拥5亿用户,这款AI产品是怎么做到的?
  11. [2020 年百度之星·程序设计大赛 - 复赛] Battle for Wosneth
  12. 微信公众平台开发3-微信服务器IP接口实例(含源码)
  13. [Docer]docker镜像操作
  14. 如何在功能、特点、价格和性能方面选择PDF编辑器?
  15. 阿里云免费SSL证书申请与安装使用-附Nginx,Apache,IIS 6,IIS 8配置SSL教程
  16. 全球及中国共享汽车市场规模预测与投资机遇研究报告2022版
  17. git如何安装aur_Linux┊一个好用的AUR工具yaourt | 简单.生活
  18. 抖音最疯狂的辞职代码,你下载了吗?
  19. Baxter实战——执行双臂机器人通过rviz打开嵌入式视觉
  20. js callee与caller 区别

热门文章

  1. Web前端 简单登陆页面设计 代码
  2. Android本地文件点击视频播放器vitamio版
  3. 数据结构之N皇后问题(C语言)
  4. 深圳友坚推出最新三星ARM Cortex-A8内核的S5PV210开发板,1GHZ主频处理器强悍登场
  5. 手机您的浏览器不允许第三方_学会这几个设置,vivo手机浏览器比第三方APP更好用...
  6. 如何查看一个avi文件的播放帧率?和帧数
  7. 教你正确解锁海外红人营销,一次性解答你的疑问
  8. Quartz立即执行
  9. 人民日报点名大数据时代信息隐私安全
  10. implicit(隐藏) intent 和 explicit(明确) intent