常见SQL注入手法总结与技巧(一)

本文详细介绍了SQL注入的基本概念、产生原因及常见手法,包括布尔盲注、时间盲注和UNION联合注入。通过对SQL注入的深入理解,帮助读者掌握如何预防和应对这类网络安全威胁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

常见sql注入手法总结与技巧(一)

前言

SQL 是 Structured Query Language 的缩写,中文译为“结构化查询语言”。SQL 是一种计算机语言,用来存储、检索和修改关系型数据库中存储的数据。

sql注入是最为常见也是破坏力很大的漏洞,它是因为开发在开发时没有对用户的输入行为进行判断和过滤,使得用户输入了恶意语句后传给了后端数据库进行相应的动作(如增删改查甚至写后门)。

**根本产生原因:**后端服务器接收传来的参数未经过严格过滤判断而直接进入数据库查询

所以在学习SQL注入前需要了解SQL基础语法

SQL注入根源分析

如果后台sql语句为:

$sql="SELECT * FROM users WHERE id=' $id ' LIMIT 0,1";

如果我们传入id=1’ 那么如果后端没有经过过滤而是直接把我们传入的参数带进sql语句中,那么sql语句就会变成:

$sql="SELECT * FROM users WHERE id='1'' LIMIT 0,1";

我们传入的 ’ 就会一块带入和前面的单引号进行闭合,导致原来后面的单引号就多余,而sql语句引号是必须成对出现的就会报错什么都查不出来,但如果我们在1’后面加入恶意语句并且把后面的原来的语句进行注解,就会造成sql语句会执行我们传入的恶意语句,实现注入。

id = -1' union select database() #
$sql="SELECT * FROM users WHERE id='-1' union select database() #' LIMIT 0,1";

-1表示查询一个不存在的id,是为了不影响后面我们的注入语句

#,–+,-- 表示注释,把后面所有语句注释掉,这样就不会影响我们的注入语句

sql参数类型分类

SQL注入按照参数类型分类可分为两种:数字型和字符型

  1. 数字型:select * from table where id=2
  2. 字符型:select * from table where id=‘2’

区别在于数字型不需要单引号进行闭合,而字符型一般需要通过单引号闭合。

判断类型方法:

​ 构造payload为:id=1 order by 9999 --+

如果正确返回页面,则为字符型;否则,为数字型

​ 构造payload为:1 and 1=2

如果正确返回页面,则为字符型;否则,为数字型

常见sql注入手法

这里先给出常用的payload,后面会使用到

select database()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值