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.
Yoya, quiero consultarte, estoy queriendo realizar el bypass del captcha en una pagina con protocolo https ¿debo agregar algun valor curl_setopt que indique que el protocolo es SSL?, y por otro lado ¿cual es la mejor herramienta para analizar las cabeceras que deben enviarse?
Estoy queriendo realizar el bypass del captcha en una pagina con protocolo https ¿debo agregar algun valor curl_setopt que indique que el protocolo es SSL?
Ps te recomendaria que se lo agregaras, para evitarte pequeños problemas. Algunas web forzan a utilizar SSL y toda peticion que no utilize SSL entonce no la procesan... Algunas permiten las peticiones tanto HTTP como HTTPS pero igual te recomiendo que si la web trabaja con SSL, utilizalo para evitar conflictos luego.
La mejor herramienta sin duda (para mi) es Live HTTP Headers (Addon para firefox).
Saludos.
seria mejor si en cURL agregaras para que capture cualquier url y capturarle el captcha de la url luego recrearlo en tu local.
Recordar que es un PoC, la idea es entender el concepto. No hay problema si quieres utilizar ese PoC como base y luego agregarle mas funcionalidades.
Saludos.
interesting blog. It would be great if you can provide more details about it. Thanks you
Bypass Captcha
pero qué puta mierda es esta??? Bypass ? MIS COJONES