一 什么是sql注入
Sql Inject(SQL注入)
在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。
一个严重的SQL注入漏洞,可能会直接导致一家公司破产!
SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。
在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:
1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
2.使用参数化(Parameterized Query 或 Parameterized Statement);
3.还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!
SQL注入在网络上非常热门,也有很多技术专家写过非常详细的关于SQL注入漏洞的文章,这里就不在多写了。
二 SQL攻击流程
三 数字型注入POST型
无传参,是POST型
burp抓包 发送到repeater
修改ID为1 or 1=1(payload)
reader查看结果
如下 所有信息显现
四 字符型注入(GET型)
首先URL中有传参
为GET
与xss差不多我们要构成一个合法闭合。字符串需要加单引号才合法。我们需要把前后两个单引号注释掉。输入Lucy'or 1=1#第一个单引号会将前面的单引号闭合,后面的#号会注释掉后面的单引号。尝试提交
结果如下
五 搜索型注入
猜想源码
select from 表名 where username like ' %k% ';
还是一样的方法
闭合前后
中间为要填入的恶意代码
结果如下
六 XX型注入
康康源码
发现这回的用括号阔起来了
难不倒我
输入xx’) or 1=1 #
学了这些之后
要想实现一个简单的SQL注入
首先猜想源码
然后根据源码进行对前面闭合 对后面注释化
中间输入我们的恶意代码就OK了