
Muchas veces necesitamos hacerle un bypass a alguna captcha, como puede ser Re-captcha.
Lo primero que se nos ocurre es usar algun OCR (Reconocimiento óptico de caracteres) para detectar las letras de la imágenes. El problema esta que no puede funcionar correctamente y en muchos casos no logra procesar la imagen. Quizás por eso no sea algo muy típico, ni muy utilizado con esto fines.
Podemos desarrollar nuestro propio OCR, pero a la larga seria un proceso muy complejo y necesitaríamos invertirle mucho tiempo. Muchos simplemente descartan el proyecto.
Otros lo que harían seria buscar alguna vulnerabilidad en la captcha, que de alguna forma les permita saber que imagen es y que letras tienen. Algunos buscarían una vulnerabilidad en la validación de la captcha que seria un proceso igualmente largo ya que tienen que entender el funcionamiento de la captcha y comenzar a probar...
Yo estaba realizando una App web y debía realizar acciones y tomar algunos datos de un sitio web, pero este utilizaba Re-captcha para poder identificarse/loguearse. Se me ocurrieron todas las opciones que menciones y otras pero no relacionada directamente con la captcha.
Aquí tengo una solución universal para cualquier Captcha. La solución mas rápida y segura, es utilizar la misma captcha que el sitio web.
Osea, la imagen genera la captcha la capturo y la muestro en mi sitio web para que los usuarios que vayan a utilizar la App web, inserten el código de la captcha y mi App web realice todo.
Al final tengo una App web, que realiza lo que quería hacer y utiliza captcha. No tengo que implementar alguna captcha en mi servicio ya que con la captcha del sitio web me basta.
Bypass de Re-Captcha

Código
<?php require_once('recaptchalib.php'); $publickey = "6Lc55McSAAAAAChEOICK8IX0V6zRh3CD64ix6jbx"; $privatekey = "6Lc55McSAAAAAB4ny39PlgX8gjMvm2x7SsrXEb6y"; $is_valid = recaptcha_check_answer($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if($is_valid->is_valid) { echo '<p><h1>Captcha Valida</h1></p>'; exit; }else{ echo '<p><h1>Captcha invalida</h1></p>'; } } ?> <form method="POST" name="form" action="a.php"> <p>Mensaje: <input type="text" name="nombre"></p> <?php echo recaptcha_get_html($publickey); ?> <input type="submit" value="enviar"> </form>
Realizare el código para hacerle el bypass.

Código
<?php //Si se envio el formulario, compruebo el el input //donde se inserte la captcha, contenga algun valor $data =' nombre='.$_POST['mensaje'].'&recaptcha_challenge_field='.$_POST['cod'].'&recaptcha_response_field='.urlencode($_POST['captcha_valude']); echo post('http://127.0.0.1/a.php', $data); } //Fin del poc para el bypass //Obtengo la imagen de la captcha y luego la muestro.... $contenido = get('http://127.0.0.1/a.php'); $img = 'http://www.google.com/recaptcha/api/image?c='.$cont[1]; echo '<IMG src="'.$img.'">'; //Fin... //Funcion para realizar peticiones GET function get($url) { return $result; } //Funcion para realizar peticiones POST function post($url, $contenido) { return $result; } ?> <!--Formulario--> <form action="aa.php" method="POST"> <p>Inserte el contenido de la captcha</p> <p><input type="text" name="captcha_valude"></p> <p>Inserte el mensaje <input type="text" name="mensaje"></p> <input type="hidden" name="cod" value="<?php echo $cont[1]; ?>"><!--Codigo de la captcha--> <input type="submit" value="Enviar"> </form>
Al rellenar todos los datos correctamente, me da por valida todo.

Probar el PoC, así entienden mejor todo.
Saludos.





Autor



En línea







un excelente truco, no te dejes llevar por los malos comentarios, si tienes una página con mucho flujo lo del captcha no será nada


