目录
注意:本文章用的dvwa靶场进行示例
如果本文章对你有帮助的话,点赞加关注持续更新更多更好的文章
1.判断是否存在注入机会
方法:在你需要输入数据的后面加上‘’(单引号)号或者“”(双引号)如果返回语法错误那么就证明可以进行注入。
原理:
假如你后端语句是
SELECT first_name, last_name FROM users WHERE user_id = '$id'
你输入1后端语句就变成了
SELECT first_name, last_name FROM users WHERE user_id = '1'
当你输入1’时,后端语句变成了
SELECT first_name, last_name FROM users WHERE user_id = '1''
这数据库语句中是有语法错误的
2.判断数字型还是字符型
方法:分别输入两组数据1 and 1=1,1 and 1=2 和 1’ and ‘1’=‘1 , 1’ and ‘1’=‘2
原理:输入其它数据时都正常显示,当输入1’ and ‘1’=’2 时不显示了,说明数据库对这个语句进行了运行,而这个数据加了单引号所以是字符型。因为逻辑方面来看1并不等于2所以才不显示。
3.判断表中列数
方法:输入1’ order by 3%23时显示未知列数就在3这个数字上减1,直到能正常显示,那么这个数是几,这个表的列数就是几
输入2时:
输入3时:
原理:order by在mysql数据库中的语法就是根据从左到右数第几个字段来排列输入的三就是用第三个字段排列 ,当输入的数字大于列数所以就会显示未知字段。