原理:程序与用户进行交互,用户可以构造特殊输入来拼接到程序中执行,从而会执行恶意代码。
如在用户交互中,输入拼接到SQL语句中,执行了与原计划不同行为,会产生SQL注入漏洞。
SQL注入漏洞存在前提:
1.必须用户可以输入
2.输入内容需要与数据库交互
例如:
select * from admin where name = '输入用户名' and password = '输入密码'
可以输入' or 1=1--空格
单引号'匹配前面输入的单引号, or 1=1 永远为真,--注释后边内容,就可以输入任意密码登陆
网上有很多万能密码,如图:
url一些列表根据id查询,与数据库进行交互,也可能导致SQL注入
验证方法:
1.'
2.and 1=1
3.adn 1=2
如页面报mysql错误,存在SQL注入漏洞