sql注入是什么?
在owasp发布的top 10漏洞里面,,注入漏洞一直是危害排名第一,其中主要指SQLInject漏洞数据库注入漏洞,主要是开发人员在构建代码时,没有对输入边界进行安全考虑,导致攻击着可以通过合法的输入点提交一些精心构造的语句,从而欺骗后台数据库对其进行执行,导致数据库信息泄漏的一种漏洞。
sql注入漏洞攻击流程
第一步:注入点探测
自动方式:使用web漏洞扫猫工具,自动进行注入点发现
手动方式:手工构造sqlinject测试语句进行注入点发现
第二步:信息获取
通过注入点取期望得到的数据。
1.环境信息:数据库类型,数据库版本,操作系统版本,用户信息等,
2.数据库信息:数据库名称,数据库表,表字段,字段内容(加密内容破解
第三步:获取权限
获取操作系统权限: 通过数据库执行shel,上传木马
常见注入点类型
数字型 user id=$id
字符型 user_id= '$id
搜索型 text LIKE '%{$ _GET['search']}%'
Post方式中使用抓包工具修改post数据部分提交注入;
练习部分
打开pikachu靶场的数字型注入(post)部分。同时打开brupsite抓包。发现一个选项框和一个查询钮,随意选一数字查询,发现网页把数据库中查询到的数据按照我们搜索的编号输出出来。
既然涉及到查询数据库查询,那么后台大概率有使用数据库查询语句,猜测使用的数据库语句为:
select 字段1,字段2 from 表名 where id = $id
我们的输入的id在sql语句的最后,如果我们能把最后的$id由原来的序号改为1 or 1=1,那么原sql语句将变为
select 字段1,字段2 from 表名 where id = 1 or 1=1
这个语句的where后条件变成了or或条件,当id=1或1=1时都触发语句。因为1=1恒成立,也就是说无论id是多少,都会输出对应的数据字段:我们把一段只输出规定id数据的sql语句改成了输出全部数据字段的sql语句。
为了验证我们的猜想。打开burpsite抓包可见我们刚刚发送请求的查询操作。将其右键发送到repeater进行查看。
在repeater中把id由原数字改为1or1=1,发送请求。
在右边的响应中查看源码可见页面输出了数据库中的所有数据,点击响应下的页面渲染,可见页面渲染的样子。
成功利用该漏洞。