什么是数据库注入,什么又是Cookie注入?

        我们在渗透测试的过程中不能只知道如何使用工具、如何进行注入,还要知道一定的原理。这样有利于我们日后技术的提升:

        数据库注入:就是把你输入的数据当作代码来执行。什么意思捏?假设你想登入一个网站那么他的简易后端代码大概是这样的:

<?php
	$username = $_POST['username'];
	$password = $_POST['password'];
	$conn = mysqli_connect('localhost','root','root','table');//连接数据库
	$sql = "select username,password from loginname where username = $username";//执行的sql语句
	$result = mysqli_query($conn,$sql);
	$array=mysqli_fetch_array($result);
	if($array['username']==$username&&$array['password']=$password){
		echo '登入成功';
	}else{
		echo '登入失败';
	}
?>

我们在表单中输入的数据出现在这里中的$sql这个执行的sql语句中,我们可以利用SQL语句进行查询数据库中的数据,这就是数据库注入。例如:

 利用一些特殊的语句 或者工具可以得到一些重要的数据。

         cookie注入就是数据库注入的一种;cookie会记录我们的一些信息以方便我们的体验更佳。但这也给网站造成了一定的风险。以谷歌浏览器为例,来看一个简单的网页

我们来手动输入一下cookie再来看一下这个页面:

刷新一下页面

 

 可以看见出来了222的数字

那么我们再来看一下这个网页的后端代码:

<?php
	@$a = $_REQUEST['a'];
	echo $a;//cookie可以把a的值传入到代码中去
?>

 这里只是简单的代码,一些网站中cookie是可以把数据传入到sql语句中的。

$_REQUEST[]函数可以进行GET,POST,Cookie传参,但是在php5.4以上版本不可以进行cookie传参了。下面上靶场:

 这里进行的是GET传参我们来试一下是不是存在cookie传参

 刷新一些会发现页面没有变化,说明可以是可以进行cookie传参的(刷新时要把GET传参的数据删除网址框中id=171

        首先我们用order by 来猜一下这个表里面有几个字段:

 发现order by 10是正常的 11就是错误的了,说明这个表有10个字段(如何burp爆破可去某度)

        然后对表进可以用burp进行爆破:

爆破出表是admin表,exists()函数是对括号的内容是否正确返回一个布尔值

接下来就是猜测先错位了

用来联合查询显示出先错位 union

可以看出页面的先错位有2,7,8,9,3

我们最后是要有数据的,还缺少字段名,这一步和表一样同样需要爆破

 依然用exists函数,最后爆破出含有username,和password字段,最后用联合查询在显错位上显示我们想要的数据: 

 得出数据后我们发现password字段明显进行了加密,并且是16位的那大概率是md5加密,我们可以找一个解密网址进行解密

顺利破解。

        渗透测试没有一个准确的模式,要用自己所学的技巧,工具大量的进行尝试。一起加油!!! 

上述没有涉及burp爆破可以自行搜索。

以上靶场来自于掌控安全学院实战靶场,所有的渗透未经授权都是违法,慎记,以上均用于学习用途!!!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐