Pikachu-Sql Inject(SQL注入)基本概述和原理
先来看下我们的实验流程
Sql Inject(SQL注入)概述
哦,SQL注入漏洞,可怕的漏洞。
在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。
SQL注入又是怎么形成的呢???
粗糙点来说:SQL注入漏洞主要是开发人员在构建代码时,没有对输入边界进行安全考虑,导致攻击者可以通过合法的输入点提交一些精心构造的语句,从而欺骗后台数据库对其进行执行,导致数据库信息泄露的一种漏洞。
SQL注入的攻击流程:
其核心思想:构造一些测试的SQL语句,然后通过前端拼接进去,它传到后台之后,我们通过它返回的数据,
看它是否有报错或者根据它返回的逻辑来判断 我们输入的内容在后台是不是被拼接到数据库里面执行了。
如果是这样的,就以为着后端的数据库会接受我们前端一些其他的数据库操作,说明这个地方存在SQL注入。
SQL注入-常见的注入点类型
●数字型 user_id = $id
●字符型 user_id = '$id'
●搜索型 text LIKE '%{$_GET['search']}%'"
不管是啥型,总而言之,就是对SQL中的各种类型的输入进行闭合测试,构造合法SQL,欺骗后台执行!
MySQL服务器支持3种注释:
✔从 '#' 字符从行尾
✔从 '-- ' 序列到行尾,请注意 '--'(破折号)注释风个要求第二个破折号后面至少跟一个空格符
✔从 /*序列到后面的*/序列,结束序列不一定在同一行中,因此该语法允许注释跨越多行。
在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:
1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
2.使用参数化(Parameterized Query 或 Parameterized Statement);
3.还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!