浅谈SQL注入


前言

SQL注入稳居owasp top10,可见其危害之大,今天与大家分享一下自己对sql注入的见解。

一、sql注入是什么?


SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

SQL注入的原理: a.参数用户可控:前段传给后端的参数内容是用户可以控制的。
b.参数代入数据库查询:传入的参数拼接到SQL语句且带入数据库查询。

二、sql注入相关知识点

1.在mysql5.0版本之后,mysql默认在数据库中自带名为“information_schema”的数据库,在该库中有三个表名分别为SCHEMATA、TABLES和COLUMNS
2.SCHEMATA 表存储的是该用户创建的所有数据库的库名,我们需要记住该表中记录数据库名的字段名为 SCHEMATA _NAME
3.TABLES 表存储该用户创建的所有数据库的库名和表名,我们需要记住该表中记录数据库库名和表名的字段分别是 TABLE_SCHEMA 和 TABLE_NAME。
4. COLUMNS表存储该用户创建的所有数据库的库名、表名、字段名,要记住该表中记录数据库库名、表名、字段名为 TABLE_SCHEMA、TABLE_NAME、COLUMN_NAME。
5. group_concat(table_name):查询所有表。
6. database():当前网站使用的数据库。
7. version():当前MYSQL的版本。
8. user():当前MYSQL的用户。
9. 注释符: 常见的表达方式有:#或–空格(–+)或/**/
10.limit用法:limit m,n 其中m是指记录开始的位置,从0开始,表示第一条记录;n是指取n条记录。

三、MYSQL查询语句

select 要查询的字段名 from 库名,表名 where 已知条件的字段名=‘已知条件的值’
查询指定数据库下的表名信息:select group_concat(table_name) from information_schema.tables where table_schema=‘数据库名’
查询指定表下的列名信息:select group_concat(column_name) from information_schema.columns where table_name='表名'
查询指定数据:select group_concat(username,password) from ’列名‘

四、MYSQL注入分类

1.从反馈结果来分 :有/无(盲注)回显
2.从攻击手法上来分:a.联合查询注入 union select
b.堆叠注入
c.报错注入 updatexml、floor、ExtractValue、exp等
d.盲注(布尔、时间)

五、SQL注入防御

代码层防御:1.对用户输入的内容进行转义
2.限制关键字输入
3.预编译
网络层面:部署防护墙和软硬WAF

总结

以上就是本次分享给大家的内容啦,至于实战内容我们下期不见不散!小白有许多不足之处,还请各位大佬斧正!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老弟和你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值