SQL注入全知全解(1)小白文章

SQL注入

1. SQL注入的理解

SQL:全称:Structured Query Language 结构化查询语言。可以对数据库进行增添删除更新

SQL注入是一种常见的web安全漏洞,形成的主要原因是web应用程序在接受相关数据参数时没有做好过滤,将其直接带入到数据库中查询,导致攻击者可以直接拼接执行构造的SQL语句。

就是在输入url的一行使用sql语句对数据库进行访问,因为web应用程序在接受相关数据时并没有对其仔细过滤,从而让攻击者有机会使用拼接执行构造的sql语句对服务器中数据库的查询

2. 漏洞危害

2.1. SQL注入漏洞对于数据安全的影响:

数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。

网页篡改:通过操作数据库对特定网页进行篡改。

网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。

数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。

服务器被远程控制,被安装后门:经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。

破坏硬盘数据,瘫痪全系统。

危险系数蛮高

2.2. 常见的产生原因

  1. 转义字符处理不当
  2. 不安全的数据库配置
  3. 不合理的查询处理
  4. 不当的错误处理
  5. 多个提交处理不当 

2.2.1. 产生的条件

SQL注入的原理

SQL注入漏洞的产生需要满足以下两个条件:

(1)参数用户可控:前端传给后端的参数内容是用户可以控制的

(2)参数带入数据库查询:传入的参数拼接到SQL语句,且带入参数库查询。`

3. SQL注入分类

3.1. 按照数据类型分类

3.1.1. 数字型

数字型输入

当输入的参数为整形时,如果存在注入漏洞,可以认为是数字型注入。

www.text.com/text.php?id=3 对应的sql语句为

 select * from table where id=3

3.1.2. 字符型

字符型注入正好相反

当输入的参数被当做字符串时,称为字符型。字符型和数字型最大的一个区别在于,数字型不需要引号来闭合,而字符串一般需要通过引号来闭合的。即看参数是否被引号包裹

例如数字型语句:select * from table where id =3

则字符型如下:select * from table where name=admin

3.2. 数字型注入与字符型注入的分辨

1. 添加单引号',看是否报错。如果报错,可能是字符型注入。

2. 尝试构造恒真条件,比如1' AND '1'='1 或者 1 AND 1=1,根据是否返回正常页面来判断。

3. 使用逻辑测试,比如1 AND 1=2,如果页面结果不同,可能为数字型。

4. 使用注释符,比如-- 或 #,在字符型注入中可能用来闭合引号。

3.2.1. 添加单引号 '

  • 测试URL:在参数值后添加单引号,例如 id=1'
    • 字符型注入特征:若返回数据库错误(如SQL语法错误),则可能是字符型注入,因为单引号破坏了SQL语句的闭合。
    • 数字型注入特征:若页面正常或提示参数类型错误,则可能是数字型注入(数字型参数无需引号包裹)。

3.2.2. 布尔逻辑测试

3.2.3. 其他

  1. 回显正常---------》联合注入 union select
  2. 回显报错---------》Error-based SQL injection(报错注入)
  3. ------------------》extractvalue()
  4. ------------------》updatexml()
  5. 无回显(盲注)-----------》

 Boolean-based blind SQL injection(基于布尔的盲注)

 Time-based blind SQL injection(基于时间的盲注)sleep()

 Stacked queries SQL injection(堆叠查询SQL注入)

4. 联合注入union

  1. union 操作符用于合并两个或多个select 语句的结果集
  2. 多表联合查询,union 操作符上下两个结果集的列数必须相等,否则会报错。
  3. 最终合并的列名,由union 上面的结果集决定,上面的列名叫什么最终显示什么。
  4. 过程

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

談不譚網安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值