文章目录
- 一:判断注入点和注入类型
- 二:绕过注入
一:判断注入点和注入类型
因为之前进行了sql注入的学习,但是对于注入点的查询和判断一直是一知半解,所以这次将sql注入点的查询判断方法和原理进行一下总结。
First: 我们要先判断是否有注入点。
通过在参数后面加入单引号。?id=1'
,如果页面出现错误,说明存在注入点。
原理:无论字符型和数字型都会因为单引号个数不匹配而出现错误。
PS:页面正确,也可能是源码把单引号过滤了。
Second: 然后判断注入类型。
数字型判断:
1:输入and 1=1
,若页面返回正常,进行下一步。
2:输入 and 1=2
, 若页面返回错误,说明sql注入为数字型。
原理: 当进行第一步时,后台sql语句判断为:id=x and 1=1
语句正确,逻辑为真,所以页面返回正常。
当进行第二步时,后台sql语句判断为:id=x and 1=2
语句正常,逻辑为假,所以页面返回错误。
所以判断为数字型判断。
假设sql注入为字符型——
第一步:id='x and 1=1'
第二步:id='x and 1=2'
sql语句把语句都转换成了字符串,所以页面都返回错误。
字符型判断
1:输入id=x' and '1' ='1
,若页面返回正常,进行下一步。
2:输入id=x' and '1'='2
,若页面返回错误,说明sql注入为字符型。
原理: 当进行第一步时,后台sql语句判断为:id='x' and '1'='2'
语句正确,逻辑为真,所以页面返回正常。
当进行第二步时,后台sql语句判断为:id='x' and '1'='2'
语句正确,逻辑为假,页面返回错误。
在判断同时要注意,后台源码可能会对闭合方式进行转换,例如双引号,单引号括号,双引号括号,我们还是要多进行尝试。
寻找后台:在sql注入查询到敏感数据后,可通过谷歌语法或者御剑等工具扫描后台。。。
关于sql注入点的学习还有其他方式方法,希望能够得到大佬的指点。
二:绕过注入
当concat函数被过滤的时候,我们可以通过limit函数来依次查询。
如果表名,库名被检测了,我们可以通过十六进制等方式编码来绕过。
关于sql注入的学习还有很多东西,革命尚未成功,同志仍需努力。