查看: 12732|回复: 0

sql注入原理(POST)

[复制链接]
发表于 2017-9-4 21:40:56 | 显示全部楼层 |阅读模式
0x00:sql注入原理
    SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,
        而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行
        攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数
        据,致使非法数据侵入系统。
        根据相关技术原理,SQL注入可以分为平台层注入和代码层注入。
        前者由不安全的数据库配置或数据库平台的漏洞所致;
        后者主要是由于程序员对输入未进行细致地过滤,从而执行了非法的数据查询。
        基于此,SQL注入的产生原因通常表现在以下几方面:
        ①不当的类型处理;
        ②不安全的数据库配置;
        ③不合理的查询集处理;
        ④不当的错误处理;
        ⑤转义字符处理不合适;
        ⑥多个提交处理不当。
       
0x01:sql注入形成的过程
    随着我国从互联网时代,到现在的物联网时代,计算机行业飞速发展,这方面的
人才需求也逐年增多,由于程序员水平层次不齐,没有安全意识,以及快速迭代导致
了,代码质量不高,给攻击者提供了便利,导致这样那样的安全事件层出不穷。
     先介绍一种架构B/S如下图所示:
        image.png
以Java为例简单的实现以下:
      表现层
       <form action="/superzedlv/login" method="post">
           用户名:<input name="name" size="20" type="text"><br><br>
           密码:<input  name="pass"  size="20"  type="password"><br><br>
           <input type="submit" value="登录">
        </form>
     应用层
      //从前端获取表单中的数据
      String name1=req.getParameter("name");
      //拼接sql语句
      String sql="select * from user where user='"+name1+"'";
     数据层
       执行sql语句查询数据
       select * from user where user=name;
0x02:利用漏洞
       首先我们确认漏洞,以上述为例我们传入的name拼接的时候变成了
       select * from user where user=‘name’;
       可以看到我们传入的数据被当做一个条件的值
       那么如果我们传入的条件是admin’ and 1=1 #那么会发生什么呢
       select * from user where user=‘admin’ and 1=1 #’
       #直接将后面的内容注释掉不执行
       结果是返回正确的,如果and后面的条件为假时返回错误
       那么说明我们后面的条件语句是执行的,也就意味着我们可以通过
       浏览器直接执行我们想要执行的sql语句(访问数据层),不需要任何权限。
       同样我们也可以通过这样admin' and 1='1语句绕过‘’
       select * from user where user=‘admin’ and 1=‘1’
       其实我们的目的就是构造可以执行的sql语句,获取信息
       下面我们就可以通过sql 语句获取其他信息了
       我们可以想一下我还有一个管理员表admin,存放着管理员信息
       那么我们就可以构造语句
       select * from user where user=‘name’ union select * from admin;
       直接查询管理员信息。
0x03:安全防护
       1)使用占位符
       2)对sql语句进行过滤
       3)不使用sql拼接的方式构造sql语句
       4)对参数类型进行限制
原文地址:http://www.superzedlv.cn/?id=5
未经允许,禁止转载
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

旗下站点

邮箱系统

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2025-3-9 12:30 , Processed in 0.030933 second(s), 9 queries , Gzip On, MemCache On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部