目录
注入的过程:
1,查找注入点
2,判断是字符型还是数字型注入
3,如果是字符型,找到他的闭合方式;数字型则不用管闭合方式
4,判断查询列数(group by 和order by )
5,查询回显位置
一,什么是注入?
通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串,最终到达欺骗服务器执行恶意的SQL命令,从而进一步得到相应的数据信息。
简单的说:通过构造一条精巧的语句,来查询到想要得到的信息。
二,注入有哪几种分类?
按查询字段分类:
字符型:当输入的参数为字符串时,称为字符型注入
数字型:当输入的参数为整型时,可以认为是数字型注入
按注入方法分类:
Union注入,报错注入,布尔注入,时间注入
三,什么是注入点?
注入点就是可以实行注入的地方,通常是一个访问数据库的连接
四,如何判断是以什么类型注入?
如何判断是字符型注入还是数字型注入:
注意:数字型一般提交内容为数字,但数字不一定为数字型
使用and 1=1和and 1=2来判断:
(1)提交and 1=1和提交and 1=2都能正常显示界面,则不可能是数字型注入,即为字符型注入
(2)提交and 1=2条件无法满足,语句无法被数据库查询到,网页无法正常显示,判断为数字型注入
从源代码分析此方法的合理性:
因为字符型需要闭合符来提交而数字型是不需要闭合的
五,闭合方式是什么?
英文输入法下的单引号,双引号,单引号加单括号'),双引号加单括号”),其他
六,如何判断闭合方式?
如果是数字型就不需要关心是哪种闭合方式了,如果是字符型就需要测试是哪种闭合方式
比如:
以get方式输入?id=1"'报错为near 1""多一个',则闭合符为'
七,闭合的作用是什么?
手工提交闭合符号,结束前一段查询语句,后面即可加入其他语句,查询需要的参数,不需要的语句可以用注释符号‘--+’或‘#'或‘%23’注释掉
八,如何union联合注入
比如提交?id=1 ' union select database() --+
注意:union查询必须保证前面查询的内容和后面查询的内容列数一致,可以用group by或者order by来测试。但是一般group by在注入时不太容易被防火墙发现。
页面只能显示一个内容,第二句话的内容是不显示的,可以把第一句的内容改为数据库不存在的数据,如id=0
?id=0' union select 1,2,database() --+