SQL 注入漏洞(三)注入原理

一、注入原理

SQL 注入漏洞的产生需要满足以下两个条件
1、参数用户可控:从前端传给后端的参数内容是用户可以控制的;
2、参数带入数据库查询:传入的参数拼接到 SQL 语句,且带入数据库查询。
当用户传入参数为 1'的时候,在数据库执行如下所示。
select * from users where id=1'SQL 语句不符合语法规则就会报错。
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1

在这里插入图片描述在这里插入图片描述

当用户传入参数为 1 and 1=1 时,
select * from users where id=1 and 1=1
因为 1=1 为真,id=1 也是真,and 两边均为真,所以页面会返回 id=1 的结果。

如果用户传入参数为 1 and 1=2 时,
因为 1=2 为假,id=1 为真,and 两边有一个为假,所以页面返回与 id=1 不一样的结果。

由此可以初步判断存在 SQL 注入漏洞,攻击者可以进一步拼接 SQL 攻击语句,进行攻击,致使信息泄露,甚至获取服务器权限。

二、判断是否存在注入

回显是指页面有数据信息返回。
id =1 and 1=1
id = 1 and 1=2
id = 1 or 1=1
id = '1' or '1'='1'
id=" 1 "or "1"="1"
无回显是指根据输入的语句,页面没有任何变化,或者没有数据库中的内容显示到网页中。
vince' and '1'='1

在这里插入图片描述

vince' and '1'='2

在这里插入图片描述

vince' and sleep(5)--+

在这里插入图片描述

三、三种 sql 注释符

# 单行注释:注意与 url 中的#区分,常编码为%23
--空格 单行注释:注意为短线短线空格。
/*()*/ 多行注释:至少存在两处的注入,/**/常用来作为空格

四、注入流程

1、是否存在注入并且判断注入类型
2、判断字段数 order by
3、确定回显点 union select 1,2
4、查询数据库信息 @@version @@datadir
5、查询用户名,数据库名 user() database()
6、文件读取 union select 1,load_file('C:\\wondows\\win.ini')#
7、写入 webshell select..into outfile...
8、补充一点,使用 sql 注入遇到转义字符串的单引号或者双引号,可使用 HEX 编码绕过
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值