SQL注入便是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者能够在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的状况下实现非法操做,以此来实现欺骗数据库服务器执行非受权的任意查询,从而进一步获得相应的数据信息。讲人话就是你在前端的操做影响到后端的数据了。前端
sql注入条件
必需要有参数web
sql注入类型
整体来是分为数字型以及字符型
字符型里又有报错 布尔 搜索型等等
字符型是须要闭合才能执行咱们想要执行的语句
字符型为何须要闭合呢?
咱们来看看数字型以及字符型的源码sql
$query="select username,email from member where id=$id"; $query="select id,email from member where username='$name'";
能够发现字符型参数里面多了一对单引号,若是不进行闭合是执行不了咱们想要执行的语句因此咱们须要加个单引号或者其余符号进行闭合,在执行咱们想要的语句而且经过注释符完成。数据库
sql注入之联合注入
使用到Union这个函数,但有条件字段数须要和数据库里面的字段数同样,不然会出错。这也是为何进行爆库等操做前须要用到order by猜字段数的原理。
下面看看实例
输入单引号报错后端
'and '1'='1(正常)
'and '1'='2(报错)
确认为字符型
order by猜字段
当order by =3时出现错误说明只有2个字段
看一下回显位!
1,2都有服务器
' union select 1,group_concat(table_name) from information_schema.tables where table_schema='pikachu'#
获得表名以后爆列名(这里省略)函数
最后爆出帐号密码学习
密码md5解一下就行spa
明天复习一下常见的报错函数!继续加油!3d