sql注入之请求方式类注入
今天主要分享各种请求方式的注入方法。
我们常见的请求主要有GET,POST,COOKIE,HTTP头等。
我们来一一讲解一下。
get型请求
对于get型,我们常见的一些注入就是id=xxx这些格式,后面携带的参数提交方式为get型。(sqli靶场1-10关全部都是get注入)
以sqli靶场为例,使用bp抓包,查看一下数据包。
这个很明显也很简单,按正常方式去测试注入即可。
post型注入
cookie注入
cookie注入的方式其实和get,post同出一道,只不过是提交参数用的是cookie方式而已。
cookie注入的使用场景:
①程序对get和post方式提交的数据进行了过滤,但未对cookie提交的数据库进行过滤。
②在条件1的基础上还需要程序对提交数据获取方式是直接request("xxx")的方式,未指明使用request对象的具体方法进行获取,也就是说用request这个方法的时候获取的参数可以是是在URL后面的参数也可以是cookie里面的参数这里没有做筛选,之后的原理就像我们的sql注入一样了。
这样说是不是有点不太理解,我们直接上案例,更快掌握。
这里再次强调一下cookie注入原理;
在php中,超全局变量变量$_REQUEST[]可以通过 GET ,POST ,COOKIE方式进行传参。而COOKIE方式的优先级高于GET,POST,在忽略对COOKIE传参方式防御的情况下,可以通过COOKIE传参进行攻击。(要求PHP版本<5.4)
这个可能会在一些简单面试上问到,稍微记忆一下即可。
http头注入
HTTP头部详解
User-Agent:使得服务器能够识别客户使用的操作系统,游览器版本等.(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)
Cookie:网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密).
X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库or某文件[通过修改XXF头可以实现伪造IP]).
Clien-IP:同上,不做过多介绍.
Rerferer:浏览器向 WEB 服务器表明自己是从哪个页面链接过来的.
Host:客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号
了解了一些小知识,下面正式来讲解http头注入,这里使用的是pikachu这个靶场
原理:后台开发人员为了验证客户端头信息,比如常用的 cookie 验证,或者通过 http 请求头信息获取客户端的一些信息,比如 useragent 、accept 字段等等,会对客户端的 http 请求头信息获取并使用 sql 进行处理,如果此时没有足够的安全考虑,则可能会导致基于 http 头的 sql 注入漏洞。
抓包,重放,User-Agent
、Accept
和Cookie
改为单引号都发现有报错,还是报错注入,payload:
1' and extractvalue(1,concat(0x7e,database())) and ' #爆数据库名
参照cookie注入即可,过程就不多讲,自己多尝试几次。
Josn注入
这里简单讲解一种其他注入方式,josn注入,相信会python写爬虫的同学对josn不会陌生。
这里再简单过一遍,json是存储和交换文本信息语法,是轻量级的文本交换格式,类似xml。
json的格式就像是这样
这里使用一个在线靶场,东塔安全学院的,可以自己试试
这里其实已经成功了,后面注入过程由于是盲注,就不多解释,主要是自己理解这个过程即可。
这些案例我都没有具体去操作,因为用的都是mysql语句,正常注入即可,不用死记硬背语句,多玩几个靶场就可以熟练掌握。
由于暂时想到这么多以及本人也是小白,实力有限,所以暂时分享这么多,后续依次推进,稳扎稳打。