SQL注入基础部分

目录

一,什么是注入?

二,注入有哪几种分类?

三,什么是注入点?

四,如何判断是以什么类型注入?

五,闭合方式是什么?

六,如何判断闭合方式?

七,闭合的作用是什么?

八,如何union联合注入


注入的过程:

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() --+

猜你喜欢

转载自blog.csdn.net/heyingcheng/article/details/129328936