重庆小潘seo博客

当前位置:首页 > 重庆网络营销 > 小潘杂谈 >

小潘杂谈

SQL注入攻击的原理

时间:2020-09-23 11:20:08 作者:重庆seo小潘 来源:
sql注入攻击的原理 恶意用户在提交查询请求的过程中将SQL语句插入到请求内容中,同时程序本身对用户输入内容过分信任而未对恶意用户插入的SQL语句进行过滤,导致SQL语句直接被服务端执行。 SQL注入攻击分类 (1)注入点的不同分类 数字类型的注入字符串类型的

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语句,整个数据库就被攻击者随意控制了。

PHP中文网,有大量免费的SQL教程,欢迎大家学习!以上就是SQL注入攻击的原理的详细内容,更多请关注小潘博客其它相关文章!