• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
angetenar
博客园    首页    新随笔    联系   管理    订阅  订阅

看完不信你不会!缓冲区溢出漏洞实战——ccproxy溢出

针对ccproxy软件缓冲区漏洞溢出,实现插入恶意代码

一、实验目的

1.掌握缓冲区溢出的原理

2.掌握常用的缓冲区溢出方法

3.理解缓冲区溢出的危害性

4.掌握防范和避免缓冲区溢出攻击的方法

二、实验工具

    CCProxy 6.2

       调试工具:OllyDBG/IDAPro

       实验环境:Windows XP sp2、虚拟机、kali虚拟机

 

一、实验步骤

  1. 找到并定位溢出点

使用ping命令加一个长的字符串加一个主机名,代理端会返回Host not found。

当输入的字符串足够长时(比如2000个a),软件就会溢出崩溃

通过kali里面的gdb工具,生成2000个不重复的字符

将2000个字符ping过去

使用OD找到跳转指令对应的内容

使用pattern offset指令查找AnBAn字符串,溢出字符从1013开始

发现ping后最多接1009个字符,第1010字符开始溢出,并且前四字节无用,如下图,当输入1013个a字符时,此时就有一个字符a溢出到了EIP的地址中

使用OD观察EIP被溢出的内容,利用OD的查找所有参考字符串“host not found”,找到后设置断点

接着发送1013长度的‘a’字符串,观察OD里EIP ESP等数值,当程序断在retn c时,可以看到此时ESP的值为‘011266F0’

当单步步过时,ESP的值为要加0XC+0X4,执行后为‘00126700’

因此,将001266F8填充为jmp esp指令,就可以实现跳转,所以希望填充0x7FFA4512,然后跳转到esp“01126700”,这里就是要添加shellcode的地方

  1. 添加用户shellcode(恶意代码)

通过编写C语言代码,使用命令system(“net user a /add”)

 

使用IDApro反汇编,在内存中找到硬编码

编写C语言代码,就是漏洞利用的shellcode

 

3.运用缓冲区溢出执行shellcode,可以看到成功溢出,并添加账户

4.运用OD分析攻击过程

可以看到,当将要retn c时,返回的地址内容变为7FFA4512,就是jmp esp的指令

然后单步步过,发现程序已经跳转到jmp esp的指令处

执行后,程序跳转到shellcode领空,开始添加账户操作,然后程序崩溃

5.实现一个具备远程桌面连接的shellcode

上面C语言程序不变,改变硬编码,注入后发现系统开启远程桌面功能

 

posted @ 2024-04-16 10:11  定州刺猬  阅读(363)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3