Buscador php vulnerable a SQLi por POST

Iniciado por RicRed, 5 Mayo 2012, 20:31 PM

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

RicRed

Como haria para crear un archivo php vulnerable por post a SQLi, ejemplo:

Inserte una comilla simple al buscador y salte un error mysql, para practicas por localhost

Bueno es todo,

Saludos!

Runex

Create una database y hazte un form con html cuyos datos sean procesados en PHP para realizar la consulta, poniendo las comillas para cerrar la query, debe ser suficiente para que salte el error.

Prueba a hacer eso, sino funciona así simple, no se me ocurre otra cosa que utilizar la función mysql_error() en PHP para que devuelva el error.

Un saludo :)
"No renunciaría al bambú.
Nunca renuciaría a ti.
No te compares con otros" "El me dijo:
El bambú tenía un propósito diferente al del
helecho, sin embargo eran necesarios y
hacían del bosque un lugar hermoso".

RicRed

Cita de: Runex en  5 Mayo 2012, 20:43 PM
Create una database y hazte un form con html cuyos datos sean procesados en PHP para realizar la consulta, poniendo las comillas para cerrar la query, debe ser suficiente para que salte el error.

Prueba a hacer eso, sino funciona así simple, no se me ocurre otra cosa que utilizar la función mysql_error() en PHP para que devuelva el error.

Un saludo :)

Cierro la consulta con comillas simples?

Ejemplo: 'SELECT * FROM buscador where nombre=$_POST['NOMBRE']'

No se si sea algo asi, luego pruebo algo.

Saludos!

PD: Es para practicas por localhost

Runex

#3
Cita de: asasasaq en  5 Mayo 2012, 21:02 PM
Cierro la consulta con comillas simples?

Ejemplo: 'SELECT * FROM buscador where nombre=$_POST['NOMBRE']'

No se si sea algo asi, luego pruebo algo.

Saludos!

PD: Es para practicas por localhost

No con lo de "poniendo las comillas para cerrar la query" me refería a poner comillas en el formulario html.

La consulta como tu bien has escrito sería así en PHP:
Código (php) [Seleccionar]
$consulta = mysql_query("select * from tablename where nombre='$_POST['NOMBRE']'")

Pero para que salte el error, la explicación es que al insertar comillas, es como si tu "rayases" la consulta por decirlo de alguna manera, por tanto al introducirlas en el buscador, te debe de devolver el error, no sé si me explico xD

Un saludo :)
"No renunciaría al bambú.
Nunca renuciaría a ti.
No te compares con otros" "El me dijo:
El bambú tenía un propósito diferente al del
helecho, sin embargo eran necesarios y
hacían del bosque un lugar hermoso".

RicRed

#4
Tengo este codigo, pero inserto una comilla simple y me sale esto: \'

barra invertida con comilla simple, como haria para que al insertar comilla simple aparezca un error de mysql en los resultados?

Código (php) [Seleccionar]
<form action="index.php" method="post">
Buscar: <input name="nombre">
<input type="submit" name="buscar" value="Buscar">
</form>


<?php

if ($_POST['buscar'])
{
$nombre=$_POST['nombre'];

// Conexión a la base de datos y seleccion de registros
$link=mysql_connect("localhost","user","pass");

$sql="SELECT * FROM buscador WHERE nombre LIKE '%$nombre%' ORDER BY nombre ASC";
mysql_select_db("database"$link); 

$result=mysql_query($sql$link);

$total=mysql_num_rows($result);

if (
$row=mysql_fetch_array($result))
{
for (
$i 0$i $total$i++)
{
?>


<div>
<span class="texto"><strong>Busqueda:</strong> <?=$row['nombre'];?> -
</span><br><br>
</div>

<?php

$row
=mysql_fetch_array($result);
}

} else {

echo 
"<p>No se encontraron resultados para la consulta <strong>$nombre</strong> :</p>";




}
?>



Bueno es todo,

Saludos!


Runex

Cita de: asasasaq en  6 Mayo 2012, 16:40 PM
Alguien sabe?

Pff yo ahora si que no te puedo ayudar asasasaq tengo muy poco tiempo libre y no se me ocurren más cosas, esperemos a ver si hay alguien que te pueda ayudar, que a mi también me interesa la respuesta.

Un saludo :)
"No renunciaría al bambú.
Nunca renuciaría a ti.
No te compares con otros" "El me dijo:
El bambú tenía un propósito diferente al del
helecho, sin embargo eran necesarios y
hacían del bosque un lugar hermoso".

Breixo

Cita de: asasasaq en  6 Mayo 2012, 16:40 PM
Alguien sabe?

Según tengo entendido es cosa de las nuevas versiones del apache, escapa tanto la comilla simple como la doble.

Yo tuve esos mismo problemas creando unos retos de hacking para mi blog y lo solucioné así:
Código (php) [Seleccionar]

$variable = $_POST['var'];
$variable = str_replace('\\\'','\'',$variable);
$variable = str_replace('\\\"','\"',$variable);

RicRed

Cita de: Breixo en  6 Mayo 2012, 22:47 PM
Según tengo entendido es cosa de las nuevas versiones del apache, escapa tanto la comilla simple como la doble.

Yo tuve esos mismo problemas creando unos retos de hacking para mi blog y lo solucioné así:
Código (php) [Seleccionar]

$variable = $_POST['var'];
$variable = str_replace('\\\'','\'',$variable);
$variable = str_replace('\\\"','\"',$variable);


Ahora si da error, gracias Breixo buena solucion, sera proteccion de magic_quotes?

Bueno es todo,

Saludos!

~ Yoya ~

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.