进一步熟练掌握burpsuite抓包功能;掌握SQL注入漏洞的基本原理;重现实验内容

SQL-Inject漏洞的概念原理

概述:数据库注入漏洞,主要是开发人员在过后见代码时,没有对输入边界进行安全考虑,导致攻击者可以通过合法的输入点提交一些精心构建的语句,从而欺骗后台数据库对其进行执行,导致数据库信息泄露的一种漏洞。
一般的网站都会有一个相对应的数据库用来存放相关用户信息,在前端会有一个窗口用于用户输入用户id,按一般运作流程,在前端输入的信息将会被提交至应用程序,经过参数的转化会去连接数据库,凭借对应的操作去获取数据库的信息。
eg:在前端输入:1 会执行如下语句: select email from users where id=1;
这时候如果攻击者在前端输入1 or 1=1.如果后端没有对对应的数据点进行安全措施保护的话,输入的内容可能会直接被拼接到后端的语句中去变成: select email from users where id=1 or 1=1;
这样整个语句的逻辑就发生了改变,不能再像最初一样给出相应的正确操作,而是反馈错误的信息。
这样就会导致数据库的信息泄露。

SQL Inject漏洞的攻击流程

第一步:注入点探测
自动方式:使用web漏洞扫描工具,自动进行注入点发现。
手动方式:手工构建sql Inject测试语句进行注入点发现。
第二部:信息获取
通过注入点取得期望得到的数据。
1.环境信息:数据库类型,数据库版本,操作系统版本,用户信息等。
2.数据库信息:数据库名称,数据库表,表字段,字段内容(加密内容破解)
第三部:获取权限
获取操作系统权限:通过数据库执行shell,上传木马。

SQL Inject漏洞-常见注入点类型

1.数字型 user_id=$ id
2.字符型 user_id=’$ id’
3.搜索型号 text LIKE ‘%{$_GET[‘search’]}%’

SQL Inject 数字型注入漏洞 概念及实验演示

通过pikachu平台的演示,来模拟SQL Inject数字型注入。打开pikachu实验环境进行模拟的演示。
首先判断输入点有没有SQL Inject漏洞,要先构思在输入点输入的数据在后台会经历哪些操作。
eg:例如在输入点提交:1 可以想象输入的数据在后端经历了以下操作:
$id= $_POST[‘id’]
select 字段1,字段2 from 表名 where id = 1
(由此想法可以用1 or 1=1去代替1)
对应操作效果可以在数据库命令行进行相关的演示。
用burp suite抓包进行进一步分析演示
在输入点提交1,打开burpsuite进行抓包操作。
进一步熟练掌握burpsuite抓包功能;掌握SQL注入漏洞的基本原理;重现实验内容_第1张图片
将Proxy抓到的包发送给Repeater进行进一步的操作。添加 or 1=1 点击提交 查看返回的内容。
进一步熟练掌握burpsuite抓包功能;掌握SQL注入漏洞的基本原理;重现实验内容_第2张图片
可以看到返回的结果是200,通过Render看到所对应的网页页面。
进一步熟练掌握burpsuite抓包功能;掌握SQL注入漏洞的基本原理;重现实验内容_第3张图片
可以看到网页将所有的用户名都进行了显示。这就表明‘id=’这个点存在SQL注入的漏洞,我们就可以通过这个漏洞拼接一些语句进去,让数据库执行相关命令得到我们想要的信息,达到我们预期的结果。

SQL Inject 字符型注入漏洞 概念及实验演示

依旧是通过pikachu的平台,找到字符型注入的环境。
eg:当需要输入一串字符当作用户名时,输入正确的用户名会得到正确的反馈,输入错误的用户名则会得到没有用户名的反馈。通过对于网页的观察可以看出提交的请求是一个get的请求而不是像数字型注入是post的请求。根据之前的逻辑,首先需要构思在输入点输入一串字符的请求后,它会在后台如何运行。
例如在输入点提交Lzers 可以想象输入点提交的数据在后端进行了如下操作:
$uname= $_GET[‘usename’]
select 字段1,字段2 from 表名 where username=‘uname’;
由于在输入点输入的是字符串所以输入的字符外会有单引号出现,这就使得原来or 1=1的测试方法无法实现,因为相关的语句会被单引号处理掉。这就需要我们另外构建一个合适的语句来让后台执行我们希望它执行的操作。
可以使用lzers’ or 1=1# 用一个单引号去迎合最前面的单引号,同时又用#将后面的单引号进行注释操作,使之无法发挥正常的作用。将相关语句输入到pikachu平台字符型注入漏洞的输入点进行实验演示后得到如下结果:
进一步熟练掌握burpsuite抓包功能;掌握SQL注入漏洞的基本原理;重现实验内容_第4张图片
网页将会将数据库中的相关内容都给予显示。

SQL Inject 搜索型注入漏洞 概念及实验演示

依旧是通过pikachu的平台,找到搜索型注入的环境。
通过观察可以看出,当记不住用户名的时候每输入一个对应的字符后,网页将会自动呈现出与之相关的用户名。可以想象后台的数据库中应该用到了搜索的逻辑。(在数据库中相对内容进行匹配性的查询的时候会用到’like‘)
按照之前的逻辑就可以通过构造与之相对应的闭合。搜索型与数字型和字符型不同的是,它在后台数据库中进行拼接操作的时候会使用单引号和百分号将相关内容包裹起来。
例如。。。。。。like ‘%xxx%’ 我们可以构造相应的语句 例如拼接以后使之成为:
。。。。。like’%xxx%‘or 1=1#%’ 通过在使用百分号和单引号迎合前面的百分号与单引号从而将前面的语句闭合,而后写入我们自己设定的逻辑。最后通过#将后面多余的百分号和引号进行注释操作,使之无法发挥正常的作用。
将xxx%'or 1=1#在pikachu平台搜索型注入漏洞的输入点进行输入,进行实验演示后得到如下结果:
进一步熟练掌握burpsuite抓包功能;掌握SQL注入漏洞的基本原理;重现实验内容_第5张图片
网页将会将数据库中的相关内容都给予显示。

SQL Inject xx型注入漏洞 概念及实验演示

依旧是通过pikachu的平台,找到xx型注入的环境。
根据之前的逻辑依旧是要对于输入点提交的数据在后端的运行模式进行猜测想象。这里通过看pikachu数据库的源代码可以知道后端以括号来拼接字符。例如:=(‘xx’)我们依旧可以用构建的方式将它改写为 =(‘xx’)or 1=1#’)使用括号和单引号迎合前面的括号与单引号,同时依旧使用#的注释功能将后面多余的单引号和括号进行清除。
将’)or 1=1#在pikachu平台xx型注入漏洞的输入点进行输入,进行实验演示后得到如下结果:
进一步熟练掌握burpsuite抓包功能;掌握SQL注入漏洞的基本原理;重现实验内容_第6张图片
网页将会将数据库中的相关内容都给予显示。
总结:无论是数字型、字符型还是搜索型xx型都需要我们对于输入点所提交的内容在后台进行的操作进行想象和分析,以便添加语句使后台的sql语句形成闭合来实现我们希望实现的效果。这也是核心思想所在。即构思后台可能会进行的操作构造闭合。

你可能感兴趣的:(进一步熟练掌握burpsuite抓包功能;掌握SQL注入漏洞的基本原理;重现实验内容)