Web安全-SQL注入常用函数(二)

★★实战前置声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

1、MySQL数据库构成

初始化安装MySQL数据库后(基于MySQL版本5.7.x),默认会创建4个系统数据库:

# 默认自带4个系统数据库
information_schema
mysql
performance_schema
sys# 查库/表/字段名 
information_schema
|__schemata					# 所有数据库的名字|__schema_name		# 数据库名
|__tables					# 所有表的名字|__table_schema		# 表所属数据库的名称|__table_name		# 表的名字
|__columns					# 所有字段的名字|__table_schema		# 字段所属数据库的名字|__table_name		# 字段所属表的名字|__column_name		# 字段的名字

2、SQL注入常用函数使用说明

以下内容基于MySQL数据库。

2.1、系统函数
system_user()		# 系统用户名
user()				# 用户名	
current_user()		# 当前用户名
session_user()		# 连接数据库的用户名
database()			# 数据库名
version()			# 数据库版本
load_file()			# 转成16进制或10进制MySQL读取本地文件的函数
@@datadir			# 读取数据库路径
@@basedir			# 安装路径
@@version_compile_os	# 数据库安装所在的操作系统
2.2、报错函数
2.2.1、extractvalue()

extractvalue(xml_frag, xpath_expr)接收两个字符串参数,xml_frag表示XML标记片段,xpath_expr表示XPath表达式,也称为定位器,返回CDATA第一个文本节点的text(),该节点是XPath表达式匹配的元素的子元素。第一个参数可以传入目标xml文档,第二个参数是用XPath路径法(示例:/a/b)表示的查找路径。如果XPath格式语法错误就会报错。SQL注入就是利用这个特性。

# 正常查询不报错
select extractvalue('<a></a>','/a/b');# XPath格式语法错
select extractvalue('<a></a>','~');# 报错信息
> 1105 - XPATH syntax error: '~'

SQL注入可以使用使用~的ascii码值0x7e拼接报错获取到想到的数据

字符型: 'and+(extractvalue(1,concat(0x7e,(select+user()),0x7e)))='1
数字型: and (extractvalue(1,concat(0x7e,(select user()),0x7e)))=1
2.2.2、updatexml()

updatexml(xml_doc, XPath_str, new_value) 参数一是String格式,XML文档对象名称,参数二:XPath格式语法(示例:/a/b),参数三是String格式,替换查找到的符合条件的数据。

字符型: 'and+(updatexml(1,concat(0x7e,(select+user()),0x7e),1))='1
数字型: and+(updatexml(1,concat(0x7e,(select+user()),0x7e),1))=1
2.2.3、GTID

GTID是MySQL数据库每次提交事务后生成的一个全局事务标识符,GTID不仅在本服务器上是唯一的,其在复制拓扑中也是唯一的。GTID_SUBSET(set1, set2 ) 在set1中的GTID也在set2中,否则返回false(set1是set2的子集),GTID_SUBTRACT(set1, set2)返回在set1中,不在set2中的GTID集合(set1和set2的差集)。

# 查询报错
select GTID_SUBSET(user(),1);
select GTID_SUBTRACT(user(),1);# 报错信息
> Malformed GTID set specification 'root@localhost'.

SQL注入拼接

'-GTID_SUBSET(user(),1)-'
# 或
'-GTID_SUBTRACT(user(),1)-'
2.3、截取函数
2.3.1、left

left(Str, index) ,参数一:待截取的字符串,参数二:从左边开始共截取多少位,举例:数据库名:security,

left(database(),1) ='s' # 结果:1-true, 0-false
left(database(),2) ='se' # 结果:1-true, 0-false

SQL注入时可以配合Burp Suite,快速爆破数据库名。

2.3.2、mid

mid(Str, start [, length]),参数一:必须,待截取的字符串,参数二:必须,起始值(从1开始),参数三:可选,要截取的长度,没传值则是参数的长度。

mid(database(),1,1) ='s' # 结果:1-true, 0-false

功能同left。

2.3.3、substr

substr()和substring()函数功能一样,都为截取字符串。substr(Str, start [, length])和substring(Str, start [, length]) 两个函数,参数一样。参数一:必须,待截取的字符串,参数二:必须,起始值(从1开始),参数三:可选,要截取的长度,没传值则是参数的长度。举例:数据库名:security,

substr(database(),1,1) ='s' # 结果:1-true, 0-false
substring(database(),1,1) ='s' # 结果:1-true, 0-false
2.4、判断函数
2.4.1、if

if(a, b, c)当a 为真时执行b; a为假时执行c。常用在时间盲注 and+if(1=1, sleep(1), sleep(5))--+

2.4.2、case when

case when 条件 then 正确的结果 else 错误的结果 end

2.5、其他函数
2.5.1、ascii

ascii(str)返回字符串的ascii码,在SQL注入中经常结合substr()函数一起使用,举例:数据库名:security,

select ascii(substr(database(),1,1));# 查询结果是 115, s的ascii码是115

ASCII码转换和对照查询表:https://www.ghostgroup.cn/ascii/ascii.html

2.5.2、length

length(str)返回字符串的字节长度,举例:数据库名:security,

select length(database());
# 查询结果是 8
2.5.3、hex

hex(str)返回字符串的十六进制,在URL不可以出现@等特殊字符时可以该函数进行转换,再通过在线网站转换回来

select hex(user());# 查询结果值
726F6F74406C6F63616C686F7374

到在线工具类网站:https://www.tomeko.net/online_tools/hex_to_ascii.php?lang=en 转换得到结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/223264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能优化算法应用:基于模拟退火算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于模拟退火算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于模拟退火算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.模拟退火算法4.实验参数设定5.算法结果6.…

Android---Kotlin 学习007

集合可以方便你处理一组数据&#xff0c;也可以作为值参传给函数&#xff0c;和我们学过的其它变量类型一样&#xff0c;List、Set 和 Map 类型的变量也分为两类&#xff0c;只读和可变。 List创建与元素获取 通过 listOf() 函数创建一个 List 集合。 val listString : List&…

ShardingSphere数据分片之读写分离

1、概述 读写分离是一种常见的数据库架构&#xff0c;它将数据库分为主从库&#xff0c;一个主库&#xff08;Master&#xff09;用于写数据&#xff0c;多个从库&#xff08;Slave&#xff09;进行轮询读取数据的过程。主从库之间通过某种通讯机制进行数据的同步。 所以&…

React Native android环境搭建,使用夜神模拟器进行开发(适用于0.73+版本)

前言 本文基于&#xff1a;“react-native” : “^0.73.0” 1.安装 Node Node.js&#xff0c;下载时选择 > 18 版本 2.下载并安装 JDK Java SE Development Kit (JDK)&#xff0c;下载时选择 17 版本 安装 验证是否安装成功 打开命令提示符输入 javac -version 回车 3.…

re:Invent 产品体验与感受分享:Amazon ElastiCache Serverless 缓存的即时扩展

授权说明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在亚马逊云科技开发者社区、 知乎、自媒体平台、第三方开发者媒体等亚马逊云科技官方渠道&#xff09;。 文章目录 前言产品介绍产品使用步骤1.创建缓存服务2.安全组开放访问权限…

【Python】解读a+=b 和 a=a+b是否一样?看完恍然大悟!

文章目录 前言一、可变对象和不可变对象总结 前言 在Python中&#xff0c;对于可变和不可变对象的行为差异是一个重要概念&#xff0c;特别是在涉及到和操作时。理解这一点对于编写高效且无误的代码至关重要。 一、可变对象和不可变对象 首先&#xff0c;让我们谈谈可变和不可…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion替换背景

在Stable Diffusion软件中,使用ControlNet+模型实现固定物体批量替换背景 出图的流程。 一、准备好图片 1.你需要准备好一些白底图或者透明底图用于训练模型。 2.你需要准备同样角度的其他背景色底图用于ControlNet勾线 3.注意检查你的图片尺寸,是否为1:1,…

离散型随机变量的分布律(也称概率质量函数:probability mass function, PMF)

设是一个离散型随机变量&#xff0c;可能的取值为&#xff0c;取各个值的概率记为&#xff1a; &#xff08;1&#xff09; 其中 并且&#xff0c; 公式&#xff08;1&#xff09;就称为离散型随机变量的分布律&#xff0c;也称概率质量函数&#xff1a;probability ma…

svn使用步骤

服务器端主要用来创建仓库&#xff0c;然后供客户端去访问与下载。 客户端&#xff1a; 图形化界面的使用&#xff1a;这里使用的是tortoise工具 1.创建一个文件夹作为自己的本地仓库目录 2.鼠标右键文件夹&#xff0c;在菜单中点击SVN checkout 3.找个图 这一步骤相当于git中…

最新版xposed编写教程

环境&#xff1a; andriod studio2023.1.1 jdk17 gradle8.2 流程&#xff1a; 1.新建项目&#xff0c;选empty views activity即可&#xff08;其他也可&#xff09; 2.语言选java&#xff0c;其他路径名称等暗战自己需要随便改&#xff0c;然后点击finish 3.修改AndroidMan…

茶室茶楼计时计费软件,软件中的商品管理计时操作教程

一、前言 茶室在营业的时候&#xff0c;不但需要计时间&#xff0c;同时还需要管理商品入库出库库存等管理。这就需要一款实用的操作简单的管理软件。 下面以 佳易王茶社计时计费软件V18.0为例说明&#xff0c;其他版本可以参考本教程。 软件下载或技术支持可以点击最下方官…

和利时DCS数据采集

在工业自动化领域&#xff0c;和利时DCS&#xff08;分布式控制系统&#xff09;被广泛应用&#xff0c;它对于工厂的生产过程和设备管理起到了重要的作用。然而&#xff0c;对于和利时DCS数据的采集&#xff0c;很多工厂面临着一些难点。本文将介绍和利时DCS的概述&#xff0c…

C语言—每日选择题—Day42

第一题 1. 下面程序输出的结果是&#xff08;&#xff09; #include <stdio.h> int main () {int x;x printf("I See, Sea in C");printf("x%d" , x); } A&#xff1a;2 B&#xff1a;随机值 C&#xff1a;都不是 D&#xff1a;15 答案及解析 D p…

智慧港口解决方案:PPT全文69页,附下载

关键词&#xff1a;智慧港口解决方案&#xff0c;数字化港口&#xff0c;智慧港口发展现状与展望&#xff0c;智慧码头&#xff0c;智慧港口发展趋势 一、智慧港口建设背景 随着数字经济、智慧交通发展&#xff0c;强调“要大力发展智慧交通和智慧物流”“努力打造世界一流的…

LAMP与LNMP架构

目录 一、概述 二、各组件的主要作用 一. 编译安装Apache httpd服务 二. 编译安装mysqld 服务 三. 编译安装PHP 解析环境 四. 安装论坛 LNMP架构 一、编译安装Nginx 二、编译安装MySQL服务 三、安装配置php文件 四、部署论坛 扩展 fpm参数优化 一、概述 LAMP架构是…

TCP/IP详解——UDP 协议

文章目录 1. UDP1.1 UDP 头部1.2 UDP 校验和1.3 UDP 传输过程1.4 UDP-Lite1.5 最大 UDP 数据报长度1.6 UDP 输入队列 1. UDP UDP&#xff1a;用户数据报协议&#xff08;User Datagram Protocol&#xff09;面向无连接的&#xff0c;也就是无需建立连接&#xff0c;传输不可靠。…

宏景eHR SQL 注入漏洞复现(CVE-2023-6655)

0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。 0x02 漏洞概述 宏景eHR 中发现了一种被分类为关键的漏洞,该漏洞影响了Login Interface组件中/w_selfservice/oauthservlet/%2e../.%2e/genera…

ICV:2023 年上半年全球量子计算的进展

​ 2023年上半年&#xff0c;量子计算&#xff08;QC&#xff09;领域取得了一系列重要进展和突破&#xff0c;显示出量子计算技术的快速发展和商业应用的不断拓展。本报告从制度进步、产业生态、投融资形势、总结与展望四个方面对量子计算领域进行了系统而详细的分析。报告不仅…

每天一点python——day94

#每天一点Python——94 #面向对象的三大特征——封装 封装&#xff1a;隐藏内部细节&#xff0c;对外提供操作方式。【提高程序的安全性】 继承&#xff1a;在函数调用时&#xff0c;使用’形参名称值‘的方式进行传参&#xff0c;传递参数的顺序可以与定义时参数顺序不同【提高…

push和扩展运算符...引发的问题

文章目录 一、问题二、原因三、解决3.1、使用拓展运算符...合并&#xff08;推荐使用&#xff09;3.2、使用concat合并3.3、循环push 四、最后 一、问题 const items [] const newItems new Array(1000000) items.push(...newItems)上面代码会出现如下错误&#xff1a; Unc…