b站笔记
什么是sql注入
判断是否发生了sql注入
当输入id=1和id=1 or 1=1时的界面不同的话,那么大概率就是发生了sql注入
注入点
这里面id就是一个注入点
判断是字符型注入还是数字型注入
也可以通过查询id=1是什么内容,id=2的时候是什么内容,再看一下id=2-1是什么内容,如果和id=1的内容是一样的,那么就是数字型注入,因为如果是字符型注入的话,不能进行数字的加减法运算,就会报错
例如:
结果是id=2-1是id=1的结果,那么就是数字型注入
另外只能进行减法,不能加法,因为URL 编码通常使用加号(+)或 %20 替代空格,解码的时候会把+解码成空格
为什么会有这样的结果
对于字符型的来说,and相当于一条语句里面的内容,对于数字型来说,and相当于一条语句,1=2一定为假,那么?id=1 and 1=2 ,这条语句一定为假
闭合
数字型不用再想闭合的事情,只有字符型会有闭合
例如:
union联合注入
使用union一定要前面的指令和后面的指令查询的数据库的列数要一致,所以在用这一条命令的时候,要先查询一下union前面的数据库的多少列数有多少,可以用group by或者order by
group by m:m代表的是列数(用二分法来判断列数)
group by和order by是一样的用法和作用,但是group by不会被防火墙发现
使用举例:
union使用举例:
查找回显位置,把原来的id设置为一个不存在的,让第一行位置查询不出来,那么就可以显示union后面的指令查询出来的信息