1.GET方式注入
get注入方式比较常见,主要是通过url中传输数据到后台,带入到数据库中去执行,可利用联合注入方式直接注入
GET方式因为比较简单,这边简单通过sqli-less2的代码来过一下,通过图一可知代码中的提交方式就是GET,打开网页后,发现在url中是有数据的,那我们就知道这是GET型的注入。
GET型注入是通过URL进行数据传递,使用的场景一般是用于数据不敏感,因为数据是嵌套在URL中的,所有人都能看到,这就很危险。所以使用GET型方式提交数据一般是直接摊牌了,因为数据根本不重要,要看就看吧。这就导致了安全性不高,但GET型方式提交数据也并不是都是弊端,好处在于数据从前端传递到后端时,速度是非常之快的,但还有一个小缺点,在提交数据的时候是有长度限制的,只有2kb。
2.POST方式注入
post提交方式主要适用于表单的提交,用于登录框的注入
方法:利用BurpSuite抓包进行重放修改内容进行,和get差别是需要借助抓包工具进行测试,返回结果主要为代码,也可转化为网页显示
POST提交是直接传递给服务器的,这边以sqli-less11为例,这也是一个典型的登录界面,它在url里是没有数据的,我们再通过网络的源代码来看看,先找到表单的代码,也就是形成登录框的代码,里面的metho="post",指的就是通过post进行数据传输。
POST型的数据提交,虽然是直接传递给服务器的,但速度并不快。在网络中要么以时间换空间,要么就是用空间换时间,所以速度换来的就是POST型的安全性高,长度不限。POST型与GET型提交的本质区别在于url中有没有包含数据。
3.Request方式注入
概念:超全局变量PHP中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可以用,这些超全局变量是:
REQUEST(获取GET/POST/COOKIE) COOKIE在新版本已经无法获取了_POST(获取POST传参)
GET(获取GET传参)_cOOKIE(获取COOKIE传参)
$_SERVER(包含了诸如头部信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组),server是一个php中的函数,能够查询很多信息,例如查询当前用户IP,$_SERVER['REMOTE_ADDR'],查询用户主机名,$_SERVER['REMOTE_HOST']等.
因为我们常见的数据提交方式就是GET与POST两种,所以这边着重讲解这两种,剩下的方式在后面的实战中都会涉及讲解。