共计 1185 个字符,预计需要花费 3 分钟才能阅读完成。
自动写代码机器人,免费开通
丸趣 TV 小编给大家分享一下 SQL 注入攻击的原理是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
sql 注入攻击的原理
恶意用户在提交查询请求的过程中将 SQL 语句插入到请求内容中,同时程序本身对用户输入内容过分信任而未对恶意用户插入的 SQL 语句进行过滤,导致 SQL 语句直接被服务端执行。
SQL 注入攻击分类
(1) 注入点的不同分类
数字类型的注入字符串类型的注入
(2) 提交方式的不同分类
GET 注入 POST 注入 COOKIE 注入 HTTP 注入
(3) 获取信息的方式不同分类
基于布尔的盲注基于时间的盲注基于报错的注入
SQL 注入攻击案例:
1、查看文章的注入案例:
查看某篇文章的 url 参数为:?id=1
则通过注入命令:?id=1 or 1=1,则可以列出整个数据表里面的所有文章。
如果查看用户是通过 user_id 来访问,如:?uid=1
则通过注入命令:?id=1 or 1=1, 则可以把整个用户表的记录全部显示出来
SQL 命令如下:
通过?id= 1 的 SQL 命令为:select * from article where id=1,此语句查询到 1 条结构
通过?id=1 and 1= 1 的 SQL 命令为:select * from article where id=1 or 1=1,此语句查询到整个表的记录
2、用户登录的注入案例:
登录表单有 user_name 字段,查询语句为:select * from users where nickname= {user_name}
则可以在 user_name 文本框填入:(or 1= 1),这样可以构造出注入的 SQL 命令:select * from users where user_name= or 1= 1,这样很容易就进入系统了。
3、SQL 注入猜表:
在登录页面的用户名字段填入:(or 1=(select count(0) from t_porg_document) or 1= 1),可以构造出注入的 SQL 命令:select * from users where user_name= or 1=(select count(0) from recharge) or 1= 1
这样就可以猜测是否 recharge 表存在. 存在则语句正常执行,否则就报错了。
猜中表名后,就可以对数据表进行增删改查的操作,如:
在登录页面的用户名字段填入:(delete from users),可以构造出危险的 SQL 命令:select * from users where user_name= delete from users;
通过加分号,可以构造出任意增删改查 sql 语句,整个数据库就被攻击者随意控制了。
以上是“SQL 注入攻击的原理是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!
向 AI 问一下细节