SQL注入之我见(上)

SQL注入产生的原理:

和XSS漏洞原理类似,未经检查或者未经充分检查的用户输入数据,意外变成了代码被执行。用户提交的数据,在拼接SQL语句的过程中,超越了数据本身,成为了SQL语句查询逻辑的一部分,此时通过恶意构建SQL语法里的组合座位参数传入数据库可以执行非法操作,产生开发者预期之外的动作。

SQL注入漏洞危害:

注入类漏洞在全球OWASP漏洞排名第一位,在2017年信息安全团队检测发现中位列第四位,是非常经典、高风险的web安全漏洞之一。

数据库信息泄露【严重】:数据库中存放的数据库被非法读取、篡改、删除;

读取系统文件,上传webshell,执行系统命令实施远程控制[【严重】;

网站挂马:修改数据库指定数据,嵌入网马链接,进行挂马攻击。

SQL注入漏洞根源:

程序编写直接使用字符串拼接、或未对用户参数过滤,便将用户参数拼接到SQL语句中。

SQL注入案例分析

某个网站的登录验证SQL查询代码为:

String sql=“SELECT COUNT(*) FROM users WHERE username=”+

users.getUsername()="'AND password='''+ user.getPassword()+""';

正常情况下,提交账号和密码,SQL语句在数据库中查询username和password,执行验证操作。此时如果输入特殊用户:'''or 1=1--",密码为空,跟踪SQL语句:

SELECT COUNT(*)FROM user WHERE username=‘’or 1=1--‘AND password=“

从开发人员的角度理解,SQL语句实现的效果是:

username='账户' AND password='密码’

现在却变为:

username=‘账户’ or 1=1--‘ AND password=”

此时验证完全失效,因为or 1=1使得语句永远为真,后面的password也已经被注释了,最终执行的SQL语句相当于:

SELECT COUNT(*)FROM users

这就是一次最简单的SQL注入,若执行如下:Users表将被删除产生灾难性的结果:

‘or 1=1;DROP TABLE user --

领导说了

您点一个

小编的工资就涨五毛!

分享IT技术、汇集最新资讯

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180605G0NF1S00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券