Less5-GET-报错注入-单引号-字符型

1.寻找注入点

在这里插入图片描述
初始页面无id参数
在这里插入图片描述
添加?id参数页面没有回显数据而是提示错误信息
在这里插入图片描述
使用’测试页面报错,可能存在SQL注入
分析报错语句:
'1'' LIMIT 0,1 除有错误
我们的输入'
猜测原语句可能为

SELECT * FROM table WHERE id = '1' LIMIT 0,1;

需要闭合'
在这里插入图片描述
继续测试
and '1' = '1页面正常错误提示
在这里插入图片描述
and '1' = '2 页面无回显
存在SQL注入漏洞

页面不回显数据只是提示错误信息属于SQL注入当中的报错注入
这时我们就要使用一些特定的函数,让其错误信息给我们提示出数据库信息
凡是可以让错误信息显示的函数或语句,都能实现报错注入,

这里我们介绍两种基于xpath语法错误的报错注入函数
XML是一种类似于HTML的标记语言
Xpath就是一种用来查找XML文档信息的语言
通常采用/xxx/xxx/xx这样的格式,如果格式不对就会报错,并将错误内容在报错信息里回显,
以下payload可直接在实战中使用
extractvalue() 用来对XML文档进行查询的函数
接收两个参数: 第一个XML文档,第二个xpath格式字符串

select extractvalue(1,concat(0x7e,(select user()),0x7e)) 

updatexml() 用来更新XML文档
接收三个参数: 第一个XML文档,第二个xpath格式字符串,第三个字符串

select updatexml(1,concat(0x7e,(select user()),0x7e),1)
2.开始注入

在这里插入图片描述
对于报错注入我们可以直接使用逻辑运算符连接并执行两条语句
可以使用or,and等逻辑运算符
先闭合左边的' 构造payload

'or (select updatexml(1,'0x7e,(select version()),0x7e',1))%23

如果我们只是让xpath语法错误只会显示出使其错误的字符串
并不会执行其中的函数,所以我们需要用到concat函数

concat()函数: 连接几个字符串为一个,如果字符串中有可执行的函数则执行

在这里插入图片描述
先闭合左边的' 构造payload

' or select updatexml(1,concat(0x7e,(select version()),0x7e),1)

ASCII码: 一种字符编码表,对于字符有二进制、八进制、十进制、十六进制等形式

用concat包裹住我们构造的语句,那么就会执行被包裹的可执行函数
中间可以执行任意语句,为了让报错信息更显眼在两边拼接了~字符,
使用了ASCII码的十六进制,我们还可以使用这个表当中的其他字符的十六进制字符
只能使用十六进制的形式
在这里插入图片描述

SELECT group_concat(schema_name) FROM information_schema.schemata

继续注入,当我们使用内置库查询语句查询所有库时发现显示不完整
因为extractvalue(),updatexml()这两个函数能查询的最大字符串长度为32个,所以结果信息显示不完整
这时我们就可以使用limit子句来实现分页查询
在这里插入图片描述

SELECT schema_name FROM information_schema.schemata limit 0,1

limit 两个参数: 第一个是返回记录的偏移量,第二个参数返回记录的最大个数
初始偏移量从0开始
这时我们只要更改左边的参数就能一个一个的把库给查出来了
查出库在查表查字段

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值