一:SQL注入的基本流程
1.寻找注入点:
注入点通常来讲就是与数据库有交互并且可以回显的地方,找到注入点是SQL注入的必要的第一步。对新手来说可以通过几次尝试,来找到回显位。
2.判断为数字型还是字符型:
在SQL中数字型与字符型最主要的区别是,字符型需要闭合,要进一步判断闭合方式,数字型则不需要。
判断方法:判断方法有许多种,根据你自身的喜好进行选择,我在这里会列举两种
①使用id=1and1=1以及id=1and1=2来判断
若注入方式为字符型时:则输入以上两种都会正常回显不会报错。
若注入方式为数字型时:在输入id=1and1=2时会报错
这种方法是通过是否会报错来进行判断。
②使用id=2-1来进行判断
假设输入id=1时回显的是:小明 id=2时回显的是:小亮
输入id=2-1回显的是id=1的结果即小明则可以判断为数字型
新手需要注意的是在id=()后面不需要加上引号,容易犯错。
3.判断闭合方式(字符型)
字符型的闭合方式有 ' " ')")
需要注意的是其中的字符均为英文字符,初学者在输入时要避免出错。
判断方法也有几种,但都是通过报错判断的,我在此列举两种。
①输入id=1'观察报错中的回显
如报错为near1"比输入多了一个引号,则可以判断闭合字符为'同理若报错为near1")则闭合方式为')
②用\(转义字符)进行判断
输入?id=1\观察回显的\后面跟的是什么就是什么闭合方式。
附:如果熟练的话使用\可以更加迅速的判断数字型以及字符型的闭合方式。
即直接输入?id=1\若回显的\后面没有跟任何内容则为数字型。
4.查询列表,拿到表名、列名。
主要是运用union select、group by等函数运用不同的方法进行查询得到
5.查询最终数据
4和5这两个步骤会在之后的union注入,报错注入中着重讲解,本篇主要是让初学者了解SQL注入的基本步骤以及方法。
附:如果以上有什么错误欢迎大家在评论区指谢谢。