什么是sql注入?
攻击者利用Web应用程序对用户输入验证上的疏忽,在输入的数据中包含对某些数据库系统有特殊意义的符号或命令,让攻击者有机会直接对后台数据库系统下达指令,进而实现对后 台数据库乃至整个应用系统的入侵。
sql注入原理?
服务端没有过滤用户输入的恶意数据,直接把用户输入的数据当做SQL语句执行,从而影响数据库安全和v平台安全。
两个条件
用户能够控制输入
原本程序要执行的SQL语句,拼接了用户输入的恶意数据
sql注入过程
判断是否可以注入
**最简单粗暴的方式验证一下,即在参数后面加一个单引号’,看网页的变化:
网页源码:
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
$result=mysql_query($sql);
可以得出我们在输入 1’的时候,加进去的的单引号在变量id的后面与前面的单引号构成了闭合,原来的后半个单引号成了多余的符号,所以查询语句不能正常理解而报错。由此可以判断此处存在注入漏洞了。
sql注入的分类
按照注入点类型分类
数字型(整型)注入
字符型注入
搜索型注入
按照注入技术(执行效果)分类
基于布尔的盲注
基于时间的盲注
基于报错的注入
联合查询注入
堆查询注入