Rumah  >  Artikel  >  pangkalan data  >  SQL注入攻击的原理

SQL注入攻击的原理

angryTom
angryTomasal
2020-02-13 17:13:3316396semak imbas

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教程,欢迎大家学习!

Atas ialah kandungan terperinci SQL注入攻击的原理. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn