【重温基础的SQL注入】图文详细解说,java后台用mybatis框架的SQL注入漏洞和效果展示,以及预防

1.   SQL注入

1.1原因描述

用户名和密码的参数是直接引用,可用拼接的方式。

1.2        拼接方式

' or '1'='1  (这个可以作为参考原型,变种很多,百度都有)


     

主要是拼接成这样的SQL:


效果如此:即使没有拼接查询张三,依然能查到数据库的张三,因为 'or' 后面 1=1永恒成立。

具体操作时分号要灵活使用,


例如图一中,password没加分号,那么password中的 or 1=1 则不需要分号。

后台的分号结构都不是固定的,想办法拼凑,有的不加分号也可以。可进行多次尝试。

1.3        避免方法

Mybatis中,将去掉图一中的分号“ ' ”,并且把’$’ 改为 ’#’,让参数作为值插入,而不是字符串拼接。

1.4        补充

此方法还和后台有关系:

上面的页面能登录成功并且进入,因为数据库只有一条数据,如果有多条数据

后台页面如下:

此时如果有两条数据,就会报错。

当然,如果有已知的用户名,并且用户名是数据库存在并且唯一,而密码进行sql注入,就不会出现这种情况。。

或者,如果后台开发人员粗心这么写:


不管他数据库有几条数据,用户名和密码都可以随便写,都可以轻松绕过啦。。。

PS:  SQL注入是几年前非常流行的漏洞,现在已经非常非常少见,不排除运气好,能遇到不知名的小网站猫进去。这里仅作为安全基础知识,熟悉一下。


  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值