sql—labs通关

本文详细介绍了通过sqli-labs各个关卡的步骤,涉及到SQL注入的各种方法,包括单引号闭合、联合查询、盲注、报错注入等,通过Navicat、phpstrom和小皮面板等工具进行实践操作。
摘要由CSDN通过智能技术生成

本文使用的工具有Navicat,phpstrom,小皮面板,至于安装方法这里不再描述可以,哔哩哔哩搜索一下即可
sqllabs下载地址:https://github.com/Audi-1/sqli-labs
安装方法:解压到小皮面板的www的目录下,在sqllabs的sql-connections目录下的db-creds.inc文件,下图划横线位置设置自己的密码即可,
在这里插入图片描述开启小皮面板的apache以及mysql服务,打开相应的界面
在这里插入图片描述点击横线位置即可,
在这里插入图片描述出现该界面,即为设置成功
less-1
代码简写

$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);

从代码角度而言,可以很清楚的看出由单引号闭合,直接使用sql注入的一半流程即可,查询字段,判断回显,数据库——表——列,即可 为 ?id=1' and 1=1 --+
less-2
代码简写

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

相较于less1而言 ,这个查询语句中并没有单引号,所以直接拼接即可为 ?id=1 and 1=1 --+
less3
代码简写

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

相较于前两个而言id位置需要‘)闭合,为 ?id=1') and 1=1 --+
less4
代码简写

$id=$_GET['id'];
$id = '"' . $id . '"';
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);

相较于之前需要使用")闭合,为?id=1") and 1=1 --+
less5
代码简写

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

与less1相同,使用单引号进行闭合,当成功为you are in...为 ?id=1’ and 1=1 --+ 所以只能够使用盲注,延时注入等

less6
代码简写

$id=$_GET['id'];
$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
if($row){
   
echo 'You are in...........';
}else{
   
print_r(mysql_error());
}

与less5类似,均没有回显,闭合方式和less4一致,为?id=1" and 1=1 --+

less7
代码简写

$id=$_GET['id'];
$sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";
print($sql);
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
if($row)
	{
   
  	echo 'You are in.... Use outfile......';
  	}
	else 
	{
   
	echo 'You have an error in your SQL syntax';
	}

没有相关过滤机制,使用?id=1’)) and 1=1 --+ 闭合 注释

less8
代码简写

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

	if($row)
	{
   
  	echo 'You are in...........';
  	}
	else{
   }

这个与less5相同,但是不能够使用报错注入,使用?id=1’ and sleep(3) --+
less9
代码简写

$id=$_GET['id'];

$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
	if($row)
	{
   
  	echo 'You are in...........';
  	}
	else{
   
	echo 'You are in...........';
	}

同less8,使用?id=1' and sleep(3) --+ 进行闭合
less10
代码简写

$id=$_GET['id'];
$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
	if($row)
	{
   
  	echo 'You are in...........';
  	}
	else 
	{
   
	echo 'You are in...........';
	
	}

同less9,无论查询结果如何都不会现在在页面,使用?id=1" and sleep(3) --+ 进行闭合测试
less11
代码简写

$uname=$_POST['uname'];
$passwd=$_POST['passwd'];
@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
print_r($row);

if($row)
{
   
	echo 'Your Login name:'. $row['username'];
	echo 'Your Password:' .$row['password'];
  }
else{
   }

使用post接受数据,相较而言,和之前的less1并没有太大的区别,使用username='admin' union select 1,DATABASE() --+ 闭合即可
less12
代码简写

	$uname=$_POST['uname'];
	$passwd=$_POST['passwd'];
	$uname='"'.$uname.'"';
	$passwd='"'.$passwd.'"'; 
	@$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";
	$result=mysql_query($sql);
	$row = mysql_fetch_array($result);

	if($row)
	{
   
		echo 'Your Login name:'. $row['username'];
		echo 'Your Password:' .$row['password'];

  	}
	else  
	{
   
		print_r(mysql_error());
	}

参数方面使用")闭合,参数为 uname=admin") union select 1,2 -- &passwd=admin
less13
代码简写

if(isset($_POST['uname']) && isset($_POST['passwd']))
{
   
	$uname=$_POST['uname'];
	$passwd=$_POST['passwd'];

	//logging the connection parameters to a file for analysis.
	$fp=fopen('result.txt','a');
	fwrite($fp,'User Name:'.$uname."\n");
	fwrite($fp,'Password:'.$passwd."\n");
	fclose($fp);


	// connectivity 
	@$sql="SELECT username, password FROM users WHERE username=('$uname') and password=('$passwd') LIMIT 0,1";
	$result=mysql_query($sql);
	$row = mysql_fetch_array($result);

	if($row)
	{
   
		echo '<img src="../images/flag.jpg"   />';	
  	}
	else  
	{
   
		print_r(mysql_error());
		echo '<img src="../images/slap.jpg"   />';	 
	}
}

闭合方法:uname=admin') union select 1,2 --
less14
代码简写


	$uname=$_POST['uname'];
	$passwd=$_POST['passwd'];
	$uname='"'.$uname.'"';
	$passwd='"'.$passwd.'"'; 
	@$sql="SELECT username, password FROM users WHERE username=$uname and password=$passwd LIMIT 0,1";
	$result=mysql_query($sql);
	$row = mysql_fetch_array($result);

	if($row)
	{
   
		echo '<img src="../images/flag.jpg" />';	
		
  	}
	else  
	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值