Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
Cargando

Autor Tema: Código CTF-s2 [SQLi]  (Leído 497 veces)

0 Usuarios y 1 Visitante están viendo este tema.

2Fac3R

  • Visitante
Código CTF-s2 [SQLi]
« en: Mayo 24, 2012, 09:45:54 pm »
Buenas hackxcrackeros ;D

En esta ocasión como les comenté les dejaré el código del que iba a ser el siguiente reto del CTF (semana 3) y que como ya dije no lo podré llevar, asi que por lo menos publíco el código por si alguien  le sirve o algo asi.

sql
 
Código: [Seleccionar]
CREATE DATABASE `ctf_hxc`;
 USE `ctf_hxc`;
 CREATE TABLE `comentarios`(
 `id` INT NOT NULL AUTO_INCREMENT,
 `Autor` VARCHAR(9),
 `Mensaje` VARCHAR(20),
 PRIMARY KEY (id)
 );

ctf_s2.php
Código: [Seleccionar]
<html>
<head>
    <title> CTF HackxCrack 2012 </title>
<link rel="stylesheet" href="ctf.css" media="screen">
</head>
<body>
<?php
/*
 * CTF HackxCrack 2012 By 2Fac3R
 *         Semana 2                                    */
error_reporting(0);
@include_once('conexion.php');
$autor = htmlentities($_POST['autor']);
$msj = htmlentities($_POST['mensaje'])?>
<h1> CTF HackxCrack 2012 </h1>
<table border="0" cellpadding="10">
    <tr>
        <th> WhiteTeam </th> <th> NullTeam </th> <th> BlackTeam </th>
    </tr>
    <tr>
        <td> Kid_goth </td> <td> #RemoteExecution </td> <td> mrobles </td>
    </tr>
</table>
    <p> Escribe tu opini&oacute;n sobre los wargames:</p> <br>
    <form action="" method="POST">
        Autor: <input type="text" name="autor" class="mensaje"> <br>
        Mensaje:<br> <textarea name="mensaje" cols="100" rows="10" class="mensaje"></textarea> <br>
        <input type="submit" name="send" value="Enviar!">
        <input type="reset" value="Borrar">
        <button type="button" onclick="javascript:window.location='ver.php'">Ver opiniones anteriores</button>
    </form><br><?php
if(!empty($msj)&&($autor)){
    $query = mysql_query("INSERT INTO comentarios(Autor,Mensaje) VALUES('$autor','$msj')",$con);
echo $query ? "<script>alert('Comentario enviado correctamente');window.location='ver.php?id=1'</script>" : "<script>alert('No se ha podido enviar el comentario')</script>";
}else{
    echo isset($_POST['send']) ? '<script>alert("Debes ingresar ambos campos")</script>':NULL;
}
?>
<!-- By 2Fac3R -->
</body>
</html>

ver.php
Código: [Seleccionar]
<html>
<link rel="stylesheet" href="ctf.css" media="screen">
<head>
    <title> CTF HackxCrack 2012 - Comentarios </title>
</head>
<body>
<?php
error_reporting(0);
@include_once('conexion.php');
$id = $_GET['id'];
if(!isset($id)){
    $id = 1;
}
$query = mysql_query("SELECT * FROM comentarios WHERE id='$id'",$con) or die (mysql_error());
while($dat = mysql_fetch_array($query)){
    echo '<br><br>Autor: <b>'.$dat['Autor'].'<br>';
    echo 'Comentario</b><br>'.$dat['Mensaje'].'<br>';
}
?>
<a href="ver.php?id=<?=$id+1?>"> Siguiente comentario </a>
</body>
</html>

ctf.css
Código: [Seleccionar]
body{
        background-image: url(ctf.png); /* img By L00PeR */
        background-repeat:no-repeat;
        background-size:cover;
        color:yellow;
    }
.mensaje{
        background-color:transparent;
        border: 1px solid orange;
        color:white;
    }


Img --> http://imageshack.us/photo/my-images/801/ctf.png/



El reto era, securizar la inyección SQL con expresiones regulares de php. Pueden ir posteando sus soluciones cada uno, recuerden que esto es para aprender y que mejor de los demás que saben mas que nosotros :P.
Espero a alguien le sirva de algo :P
Zalu2

Desconectado ravenheart

  • Residente de Hack x Crack [L4]
  • ****
  • Mensajes: 335
  • No quiero preguntas técnicas por privado, gracias.
    • Ver Perfil
Re:Código CTF-s2 [SQLi]
« Respuesta #1 en: Mayo 25, 2012, 06:26:17 am »
El reto era, securizar la inyección SQL con expresiones regulares de php.

"Algunas personas, al enfrentarse a un problema, piensan 'Ya sé, voy a usar expresiones regulares.' Ahora tienen dos problemas."

Como reto, pase. Pero no es la herramienta adecuada.

Las expresiones regulares son muy útiles en una serie de problemas muy concretos. Por ejemplo, no son prácticas para validar correctamente una dirección de correo electrónico. Aquí está la expresión regular oficial para hacer esto último: http://ex-parrot.com/~pdw/Mail-RFC822-Address.html

Y ni siquiera valida correctamente todos los casos, ver el comentario del final.
You do not need hope if you have drama to back you up.

Desconectado #RemoteExecution

  • Conociendo la comunidad [L2]
  • **
  • Mensajes: 119
    • Ver Perfil
Re:Código CTF-s2 [SQLi]
« Respuesta #2 en: Mayo 26, 2012, 02:27:10 am »
El reto era, securizar la inyección SQL con expresiones regulares de php.

"Algunas personas, al enfrentarse a un problema, piensan 'Ya sé, voy a usar expresiones regulares.' Ahora tienen dos problemas."

Como reto, pase. Pero no es la herramienta adecuada.

Las expresiones regulares son muy útiles en una serie de problemas muy concretos. Por ejemplo, no son prácticas para validar correctamente una dirección de correo electrónico. Aquí está la expresión regular oficial para hacer esto último: http://ex-parrot.com/~pdw/Mail-RFC822-Address.html

Y ni siquiera valida correctamente todos los casos, ver el comentario del final.

En todo caso creo que depende de la logica del programador.

2Fac3R

  • Visitante
Re:Código CTF-s2 [SQLi]
« Respuesta #3 en: Mayo 26, 2012, 06:02:42 pm »
"Algunas personas, al enfrentarse a un problema, piensan 'Ya sé, voy a usar expresiones regulares.' Ahora tienen dos problemas."

Como reto, pase. Pero no es la herramienta adecuada.

Las expresiones regulares son muy útiles en una serie de problemas muy concretos. Por ejemplo, no son prácticas para validar correctamente una dirección de correo electrónico. Aquí está la expresión regular oficial para hacer esto último: http://ex-parrot.com/~pdw/Mail-RFC822-Address.html

Y ni siquiera valida correctamente todos los casos, ver el comentario del final.

Ese es el punto, es o era el código de un reto :P
Zalu2

Desconectado #RemoteExecution

  • Conociendo la comunidad [L2]
  • **
  • Mensajes: 119
    • Ver Perfil
Re:Código CTF-s2 [SQLi]
« Respuesta #4 en: Mayo 27, 2012, 01:02:55 am »
Yo usaria, eexpresiones regulares y alguna que otra cosita mas, y aparte adjuntaria un .htaccess con reglas que eviten la insercion de consultas sql oo alguna otra vulnerabilidad.