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
El source de ejemplo
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
El source de ejemplo
<?php require_once('recaptchalib.php'); $publickey = "6Lc55McSAAAAAChEOICK8IX0V6zRh3CD64ix6jbx"; $privatekey = "6Lc55McSAAAAAB4ny39PlgX8gjMvm2x7SsrXEb6y"; if(!empty($_POST['nombre'])) { $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="coment.php"> <p>Mensaje: <br><input type="text" name="nombre"></p> <?php echo recaptcha_get_html($publickey); ?><br> <input type="submit" value="enviar"> </form>
Realizare el código para hacerle el bypass.
<?php //Si se envio el formulario, compruebo el el input //donde se inserte la captcha, contenga algun valor if(!empty($_POST['captcha_valude'])) { $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'); preg_match('/ipt" src="(h[^"]+)/', $contenido, $result); preg_match('/challenge :[sn]+'([^']+)/i', get($result[1]), $cont); $img = 'http://www.google.com/recaptcha/api/image?c='.$cont[1]; echo '<IMG src="'.$img.'">'; //Fin... //Funcion para realizar peticiones GET function get($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch); return $result; } //Funcion para realizar peticiones POST function post($url, $contenido) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_POST, 1); curl_setopt ($ch, CURLOPT_POSTFIELDS, $contenido); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec ($ch); curl_close ($ch); 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 <br><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.
7:18