什么是注入?
通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的sql命令,从而进一步得到相应的数据信息
通过构造一条精巧的语句,来查询到想要的信息
注入分类
按照查询字段分为:
字符型 当输入的参数为字符串时,称为字符型
数字型 当输入的参数为整形时,可以认为是数字型注入
按照注入方法 union注入,报错注入,布尔注入,时间注入,堆叠注入
什么是注入点
注入点就是可以实行注入的地方,通常是一个访问数据库的连接
如本页面注入点input the ID
进入Less-1网址后面加上 ?id=1
注入点常在有人机交互的地方
如何判断是字符型注入还是数字型注入
使用and 1=1 和and 1=2来判断
数字型一般体检内容为数字,但数字不一定为数字型
Less-1 提交and 1=1 和提交and 1=2 都能正常显示界面,则不可能是数字型注入,即为字符型注入
Less-2 提交 and 1=2 条件无法满足,语句无法被数据库查询到,网页无法正常显示,判断为数字型注入
数字型还可使用运算(减法)进行判断,等于的是运算后的结果,加号会被理解成空格
查看源文件中的源代码:
字符型需要闭合符,如图所示 ’
提交 1 and 1=1
单引号闭合语句后where 语句为一个条件id=‘1 1 and 1=1’
数字型则不需要闭合符闭合
提交 and 1=2
数字型不需要闭合
闭合方式
' " ') ") 其他
如何判断闭合方式
Less-1输入?id=1'" 报错为near 1"" 多了一个 ' 闭合符为 '
Less-3 输入id=1''' 报错为near 1'''') 多一个 ') 及闭合符号为 ')
闭合的作用
手工提交闭合符号,结束前一段查询语句,后面即可加入其他语句,查询需要的参数,不需要的语句可以使用注释符号 ‘--+’ 或 ‘#’ 或 ‘%23’ 或‘-- -’ 注释掉
注释掉:利用注释符号暂时将程序脱离运行
把某段程序 “注释掉” ,就是让它暂时不运行(而非删除掉)
union联合注入
需要先使用group by 或 order by 二分法判断默认页面数据列数量,group by不会被防火墙发现
?id=1' group by 3 -- - 正常
?id=1' group by 4 -- - 异常
判断有3列
提交 ?id=1' union select database() -- - 报错column数量错误
查询信息使用
?id=1' union select 1,2,3 -- - 只会读取第一行
所以在浏览器中显示为:
在phpmyadmin中的查询:
页面只能显示一个内容,第二句的内容是不回显的,可以将第一句的内容改为数据库不存在的数据,如id=0
要使第一行不存在,才会在页面显示第二行,所以使 id=-1' 后面不变
成功找到 回显位置(能够在页面体现出来)
所i以2和3都可以回显,在 ?id=1' union select 1,2,3 -- - 中将2或3替换成database()
即?id=1' union select 1,2,database() -- -
查询基础步骤:
- 查找注入点
- 判断是字符型还是数字型注入 and 1=1 1=2 /3-1
- 如果字符型,找到它的闭合方式 ' '' ') '')
- 判断查询列数,group by order by
- 查询回显位置,-1
标签:--,基础,闭合,数字型,sql,查询,id,注入 From: https://www.cnblogs.com/cheng-yicheng/p/17623015.html