找了一下mysql对extractvalue()、updatexml()函数的官方介绍https://dev.mysql.com/doc/refman/5.7/en/xml-functions.html#function_extractvalue
ExtractValue(xml_frag, xpath_expr)
知识点
解释一下这两个参数xml_frag,是xml标记片段,第二个参数它返回由 XPath 表达式匹配的元素的第一个文本子节点的文本内容(CDATA)
XPath 表达式是一种用于在 XML 或 HTML 文档中定位和选择特定节点或节点集的语法
基础语法:
1./:/html表示选取 HTML 文档的根节点<html>。
//:表示在整个文档中进行搜索,不考虑节点的具体位置。eg://div表示选取文档中所有的<div>元素。2.@:用@符号来选取节点的属性
eg://a[@href]表示选取所有具有href属性的<a>元素。3.[]:用于筛选节点,放在方括号[]中。eg
://li[1]表示选取第一个<li>元素,//div[@class='content']表示选取class属性为content的<div>元素。4.文本子节点:元素内纯文本的内容
5.CDATA:只当作字符数据来处理,不进行额外转译
结合实例

后面一步一步常规注入就行了,通常还会在 concat() 中加入特殊字符(如 ~、0x7e、#)来确保 XPath 解析失败
UpdateXML(xml_target, xpath_expr, new_xml)
知识点
1.此函数将给定的 XML 标记片段 xml_target 的单个部分替换为新的 XML 片段 new_xml,然后返回更改后的 XML。xml_target 中被替换的部分与用户提供的 XPath 表达式 xpath_expr 匹配。如果没有找到与 xpath_expr 匹配的表达式,或者找到了多个匹配项,该函数将返回原始的 xml_target XML 片段。所有三个参数都应该是字符串。
(/G是以垂直形式查询结果而非表格)
2.符号:
*:通配符eg:/*/b ,/*/b/*
|:联合 eg://b|//c 匹配 XML 目标中的所有 b 和 c 元素
g[@attribute="value"]:eg://b[@id="idB"] 在片段 <a><b id="idA"/><c/><b id="idB"/></a> 中匹配第二个 b 元素,//*[attribute="value"]匹配具有 attribute="value" 的任何元素
//b[@c="x"][@d="y"]:匹配在给定 XML 片段中任何位置出现的元素 <b c="x" d="y"/>
//b[@c="23"]|//b[@c="17"]:相当于//b[@c="23" or @c="17"],匹配 c 属性的值为 23 或 17 的所有 b 元素
结合实例


忘记加group_concat,也可以limit一个一个查注意是limit0,1
而不是limit(0,1),哦买噶做的时候搞错了一直不行

后面常规注入就行了,本来做过一遍,没保存没掉了
Post
Pass11
找到一篇文章对原理解释很清晰
1-Web安全——初识SQL注入漏洞_select * from user where name='123' or '1'='1-CSDN博客

从网上找的源码,便于理解post传参的查询语句

界面变成登陆页面

随便输入,抓包,是post传参
报错

admin显示登陆成功

尝试--+ 登陆失败,但是-- -登陆成功,过滤了--+

尝试万能密码登陆成功

order by1,2可任意1,2,3不行

说明有两列
判断回显位1,2都可,
数据库名字回显,其实大体和get差不多




Pass12

"报错,闭合是")
尝试改过后的万能密码得到部分信息

两列,后面步骤一样了
Pass13

')闭合

万能密码无回显,用报错注入
Pass14

双引号闭合
但是没有信息回显
虽然1,2时没有有效信息,尝试1,2,3的时候爆错,说明有2列

无回显还是试试爆错注入,注意payload怎末写别搞错掉
后面一样了
Pass15
布尔盲注
无论试什么都没得回显,
尝试万能密码成功登录,所以是单引号闭合,找到注入点,尝试报错注入
还是没得回显,可能过滤了被,只能用布尔盲注了注意payload里是or

好的后面按着做就行了,哦哦最好还是先用length把长度爆出来,当然了也可以用if语句构造延时盲注,我看别人的wp还可以用sqlmap做
sqlmap

下载成功,这篇文章对sqlmap的使用解释的非常清楚SQLMAP的下载安装和使用(Windows)_sqlmap下载-CSDN博客
算了,搞了半天环境变量也添加了,就是显示无法运行我也不知如何是好
Pass16
和pass15一样,就是闭合改为")
Pass17
页面提醒重置密码,无论怎摸样都没有回显,查看源码,只对uname进行了过滤,所以uname必须为真
直接爆破出用户名admin

在passwd位置单引号,爆错,单引号闭合

后面就在password位置报错注入就ok了





















