Anti flood/Lamers sin escrupulos

A ver, les planteo el escenario:

Un lammer aburrido que desea joder y con ip variable realiza sendos ataques "Flood" a una web. Esta web guarda los logs en un txt (ademas de en la base de datos).

La idea es crear un script que le meta ban automaticamente al lamercillo cuando se conecte, use la ip que use.

Y como hacerlo si tiene ip variable? Sencillo, si hay algo que lo diferencia de los demás es que el lamercillo queda repetidamente registrado en los logs.

Haremos un source en php para leer dichos logs en cada intento erroneo de
identificación y le meteremos un ban automatico y de por vida xD.

Además, puede que este lamercillo llegue a vulnerar el tag, tambien crearemos logs de las ips que postean en el tag y si se repite 3 veces seguidas BAN!

Para empezar, veamos como se consigue una IP via php: $_SERVER["REMOTE_ADDR"]

Y si tiene proxy: $_SERVER["HTTP_X_FORWARDED_FOR"]

Entonces, un simple condicional inviolable y nos despreocupamos de la IP:

if ($_SERVER["REMOTE_ADDR"] == "200.94.90.133") {echo "LAMMER DE MIERDA, VETE A TU PUTA CASA";}
elseif ($_SERVER["HTTP_X_FORWARDED_FOR"] == "200.94.90.133") {echo "QUE TE PIRES PUTO LAMMER!";}
else {
...
...
...
}


Con esto tendriamos solucionado el problemilla del lamerzuelo sin conocimientos y desafortunado, el problema seria que dicho lamerzuelo sin escrupulos y valido para nada tubiera ip variable, con lo cual el banear una solo ip no serviría de nada (de más está decir que el lamersucho invalido no sabe usar proxys, aunque tambien serviría en este caso la solucion xD).

Entonces lo que hace falta es un source que cree un detalle de todas las ips que posten en el tag o
intentan identificarse en la web:

<?php
...
...
...
$IP=$_SERVER["REMOTE_ADDR"]; #esta seria la IP real (o la de un proxy muy transparente)
$IP2=$_SERVER["HTTP_X_FORWARDED_FOR"]; #esta la ip del proxy...

if ($IP2 == ""){
$master=fopen("antilamers.txt",a);
fwrite($master, $IP);
fclose($master);
}
else {
$master=fopen("antilamers.txt",a);
fwrite($master, $IP2); # en este caso no nos interesaria banear la ip real pq daria el mismo resultado..
fclose($master);
...
...
...
?>

O se podria hacer mas seguro en sql (para los que creen en eso de los hackers y fantasias de esas xD) usado mysqlquery para añadir las ips en una tabla y con select * from table where ip like "ip" comprobarlas... pero como no me salio de la polla hacerlo así, no voy a explicarlo xD.

OK, siguiendo con el tema, ahora hay que hacer un scriptcito anti PUTOS-LAMMERS-DE-MIERDA (XD) que se fije en las ultimas 3 entradas del txt que hemos creado y si son =les meta un ban al lammer.


<?php
$ips = file('antilamers.txt');
if ($ips[0] == $ips[1] && $ips[1] == $ips[2]) {
$master=fopen("banlist.txt",a);
fwrite($master, $ips[0]);
fclose($master);
}
...
...
?>

Eso iria en cualquier web "bruteable" tipo un tag o un form de registro...

Ahora solo queda aplicar el ban

<?php
$baneds=file("banlist.txt");
foreach ($baneds as $baned_num => $baned) {
if ( $_SERVER["REMOTE_ADDR"] == $baned OR $_SERVER["HTTP_X_FORWARDED_FOR"] == $baned ) {
echo "PRINGADO LAMERUZO! DATE EL PIRO!!!!<br><br> HOMELESSHACKER OWNS YOU!";
}
else{
...
...
...
}
?>


Y listo, ni captchas, ni reglas mas complicadas en apache, ni ná! PUTOS LAMMERS que divertidos son xD

Ya se que lo reglamentario es hacerlo en sql, pero tenia al lameruzo este haciendo un brute al sistema de identificación y apurado lo hice así.

A lo mejor en algun momento, si me aburro mucho, lo paso a sql y lo posteo.
De todos modos asi lo veo bastante seguro. Que opinan?


Me comentan que seria vulnerable a xss o a sql injection ese script, realmente si se hace en un txt no es vulnerable pero si lo guardan en una db recuerden pasarle htmlentities y addslashes a la variable que contiene la ip, puesto que sino se podria llegar a hacer una injection o un xss atack editando la cabecera html.

0 comentarios: