kali Linux安装流程;SQL-Inject漏洞实验模拟

Kali Linux安装具体流程

前往VMware官网下载VMware虚拟机。
在kali官方网站下载所要用到的镜像文件。因为是在VMware虚拟机中使用,所以我们可以选择下载虚拟机的版本
下载完成后将相关压缩文件进行解压缩处理。打开VMware虚拟机点击文件打开,根据kali下载下来时的下载目录找到相关数据包进行读取安装。
提示:虚拟机版本的是直接导入的不需要安装,默认的root用户密码是:toor。

SQL-Inject漏洞手动测试-基于函数报错系统的信息获取

基于报错的信息获取-概念思路简述
技巧思路:在MYSQL中使用一些制定的函数来制造报错,从而从报错信息中获取设定的信息。
select/insert/update/delete都可以使用报错来获取信息。
背景条件:后台没有屏蔽数据库报错信息,在语法发生错误是会输出在前端。
三个常用报错函数之一: updatexml()
updatexml():函数是MYSQL对XML文档数据进行查询和修改的XPATH函数。
函数作用:改变(查找并替换)XML文档中符合条件的节点的值。
语法:UPDATEXML(xml_document,XPathstring,new_value)
其中第一个参数:fiedname是String格式,为表中的字段名。
第二个参数:XPathstring(Xpath格式的字符串)。
第三个参数:new_value,String格式,替换查找到符合条件的
注意点:Xpath定位必须是有效的,否则则会发生错误。
pikachu实验模拟:
使用pikachu实验平台的字符型漏洞进行Select下报错的利用演示。
首先在进行基于函数报错系统来获取信息时,首先要检测在输入不符合要求的字符时会不会有报错信息返回
当我们构建一个错误的语法并输入时,会看到有报错信息出现并反馈至前端。这就说明试验测试的环境符合我们的要求。
kali Linux安装流程;SQL-Inject漏洞实验模拟
根据之前的思路,用UPDATEXML来构建一个报错语句,以获取相关的数据。
思路:Kobe’ and updatexml(1,version(),0)# 先用单引号将前面的单引号闭合,然后通过and使系统执行update的函数。
kali Linux安装流程;SQL-Inject漏洞实验模拟
执行后发现并没有将完整的版本号报出来,而是输出了.53.这就要求我们对函数内容进行处理,才能完整的看到相关的报错内容。将payload进行改造变为:Kobe’ and updatexml(1,concat(0x7e,version()),0)#
用MYSQL中concat的方法将参数拼接组合为一个完整的字符串进行输出。
kali Linux安装流程;SQL-Inject漏洞实验模拟
实验结果证明有效,而我们在接下来的操作中只需要将version()替换成其他表达式即可。通过select_table获取数据库中表名字段名后则可进一步获取数据库中用户名、密码等信息。
用insert/Update/delete操作进行注入
在pikachu实验环境下分别进行三种不同操作的实验演示。
insert:
所谓insert就是我们在前端注册的信息最终会被后台通过insert的操作插入到数据库中去,在接收前端注册数据时没有用到防SQL注入的处理,导致前端输入的数据被直接拼接到了insert的操作之中去了。就产生了insert类的SQL注入漏洞。
在构造闭合时,根据insert的特点一般使用or来构造闭合。
1’ or updatexml(1,concat(0x7e,database()),0) or ’kali Linux安装流程;SQL-Inject漏洞实验模拟
然后就可以看到对应的报错。总结:insert的注入构造闭合时除了 or的使用其他与前面所提到的构造闭合的思路相同。
update:update的操作与insert操作大体相同,区别就是insert用于用户注册界面,而update用于用户登陆后更改个人信息的页面。在进行update操作时通过构造与insert相同的拼接语句则就能做到在前端看到相关的报错信息。
delete:delete操作的思路与之前同样大同小异。在pikachu-delete注入页面可以看到留言板的页面。点击删除,对应的留言就被删除了,通过使用burpsuite对此操作进行抓包分析。
kali Linux安装流程;SQL-Inject漏洞实验模拟
通过burpsuite抓到的数据包可以看到,删除留言的请求的实质就是将留言的id发送到后台将其进行删除操作。
使用burpsuite将抓到的数据包发送给Repeater。在Repeater中对id进行构造闭合的操作。因为相关删除操作的本质就是后台获取了相关id并对其留言进行撤除。
因为传入的id为数字型,所以无需在开头使用单引号进行闭合操作。
将1 or updatexml(1,concat(0x7e,database()),0) 放到bupsuite中去运行一下。
这里由于参数是在url中提交的是以get请求提交的,所以我们需要对参数进行url的编码。可以通过burpsuite中自带的转化工具对其进行编码。

kali Linux安装流程;SQL-Inject漏洞实验模拟
kali Linux安装流程;SQL-Inject漏洞实验模拟
编码完成后,点击提交。在返回数据的最下方即可见报错返回的数据库的名称。‘~pikachu’。
三个常用报错函数之一:extractvalue()
函数作用:从目标XML中返回包含所查询值的字符串。
语法:ExtractValue(xml_document,xpath_string)
第一个参数:xml_document是string格式,为XML文档对象的名称,中文为Doc。
第二个参数:xpath_string(Xpath格式的字符串)
注意点:Xpath定位必须是有效的,否则则会发生错误。
Kobe’ and extractvalue(0,concat(0x7e,database()))#
在实验平台经过测试所得到的结果与update相同。
三个常用报错函数之一:floor()
此函数主要用于取整。floor函数要构成报错,在它的表达式中必须具备以下条件:1.运算中含有count 2.运算中必须要有group by 3.运算中必须包含rand(也就是随机取值)
Kobe’ and (select 2 from (select cout(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a)#在实验平台进行输入操作后即可得到相应的报错反馈。

SQL-Inject漏洞手动测试-union infromation

union联合查询:可以通过联合查询来查询指定的数据。
用法举例:select username,password from user where id=1 union select字段1,字段2from表名联合查询的字段数需要和主查询一致!
union联合查询演示
kali Linux安装流程;SQL-Inject漏洞实验模拟
打开pikacchu进入实验版面进行相关实验操作。相应的payload为:xx’ union select database(),user()#
由于不知道union里到底需要几个字段,这里就需要猜测。用到order by的方法进行试验。看有多少个字段。知道有多少列以后通过union查询到想要知道的信息。

kali Linux安装流程;SQL-Inject漏洞实验模拟
最后:MYSQL小知识补充:
在mysql中,自带的information_schema这个表里面存放了大量的重要信息。具体如下:
如果存在注入点的话,可以直接尝试对该数据库进行访问,从而获取更多的信息.
比如:SCHEMATA表:提供了当前mysql实例中所有数据库的信息是show databases的结果取之此表。
TABLES表:提供了关于数据库中的表的信息(包括视图)详细表述了某个表属于哪个schema,表类型,
表引擎,创建时间等信息,是show tables from schemaname的结果取之此表。
COLUMNS表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns
from schemaname.tablename的结果取之此表。
information_schema中存放了很多重要信息,例如所搭建的数据库表名列明等信息,我们可以通过sql注入漏洞获取这些重要信息。
可以在pikachu实验环境来进行实际的操作演示
相应的payload为:
kobe’ union select table_schema ,table_name from information_schema.tables where table_schema=‘pikachu’#
这里同样可以使用 order by来确定字段数。
kali Linux安装流程;SQL-Inject漏洞实验模拟
最终索要查询得知的结果不同,payload也不同,可以根据需求来改写,以获取表名、列名等信息。可以将获取到的结果通过CMD5进行解密操获得最终信息。