第2讲:第2章-入侵方法与手段概要.ppt

  1. 1、本文档共70页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2讲:第2章-入侵方法与手段概要

* Teardrop Teardrop是一种拒绝服务攻击,可以令目标主机崩溃或挂起。目前多数操作系统已经升级或有了补丁程序来避免受到这种攻击。 Teardrop攻击和其他类似的攻击发出的TCP或UDP包包含了错误的IP重组信息,这样主机就会使用错误的信息来重新组合成一个完整的包。结果造成崩溃、挂起或者执行速度极其缓慢。 * Teardrop SYN SYN +ACK ACK PSH 1:1025…… PSH 1025:2049…… PSH 2049:3073…… FIN ACK PSH 1:1025…… PSH 1000:2049…… PSH 2049:3073…… 试图重组时 主机崩溃 返回 * Ping of Death Ping of Death攻击是利用网络操作系统(包括UNIX的许多变种、windows 和MacOS等)的缺陷,当主机接收到一个大的不合法的ICMP回应请求包(大于64KB)时,会引起主机挂起或崩溃。 返回 * 2.5分布式拒绝服务攻击 * 2.5分布式拒绝服务攻击 DDos攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式 被DDos攻击时的现象 被攻击主机上有大量等待的TCP连接 网络中充斥着大量的无用的数据包,源地址为假IP地址 制造高流量无用数据,造成网络拥塞 利用受害主机提供的服务或传输协议上的缺陷,反复高速地发出特定的服务请求。 严重时会造成系统死机 * 2.6 缓冲区溢出攻击 堆栈原理一个简单的例子example1.c: void function(int a,int b,int c){ char buffer1[5]; char buffer2[10]; } void main(){ function(1,2,3) ;} 使用gcc的-S选项编译,以产生汇编代码输出: $gcc –S –o example.s example1.c 通过查看汇编语言输出,可以看到对function()的调用被翻译成: * 2.6 缓冲区溢出攻击 push1 $3 push1 $2 push1 $1 call function 指令call会把指令指针(IP)也压入栈中,做为返回地址(RET). 在函数中所首先做的第一件事是: push ebp movl %esp,ebp subl $20,%esp * 2.6 缓冲区溢出攻击 可以想像function()被调用时堆栈的模样: buffer2 buffer1 EBP RET a b c 堆栈顶部 堆栈底部 内存低地址 内存高地址 * 2.6 缓冲区溢出攻击 我们可以试着修改第一个例子,让它可以覆盖返回地址: example2.c: void function(int a,int b,int c){ char buffer1[5];char buffer2[10];int *ret; ret=buffer1+12 (*ret)+=8 } void main(){ int x;x=0; function(1,2,3) x=1 printf(“%d\n”,x); } * 2.6 缓冲区溢出攻击 缓冲区溢出的一个例子: example3.c ---------------------------------------------------------------------- void function(char *str) { char buffer[16]; strcpy(buffer,str); } void main() { char large_string[256]; int i; for( i = 0; i 255; i++) large_string[i] = A; function(large_string); } * 2.7格式化字符串攻击 例2: /*   * fmtme.c   *    Format a value into a fixed-size buffer   */   #include   int   main(int argc, char **argv)   {     char buf[100];     int x;     if(argc != 2)       exit(1);     x = 1;     snprintf(buf, sizeof buf, argv[1]);     buf[sizeof buf - 1] = 0;     printf(buffer (%d): %s\n, strlen(buf), buf);     printf(x

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档