您当前的位置:首页 > 互联网教程

当注入函数被过滤时的Mysql注入小技巧

发布时间:2025-05-12 12:05:43    发布人:远客网络

当注入函数被过滤时的Mysql注入小技巧

一、当注入函数被过滤时的Mysql注入小技巧

在进行盲注时,我们可能遇到注入函数被过滤的情况。此时,通过使用其他函数,可以达到相同的效果。以下是一些替代方法,可以帮助我们在注入过程中应对函数过滤问题。

通常,我们使用substr()函数截取字符串。当substr()被过滤时,可以使用以下函数:

从字符串的左边第length位开始截取字符串。

用法示例:left('www.baidu.com',8)结果为:www.baid。

从字符串的右边第length位开始截取字符串。

用法示例:right('www.baidu.com',8)结果为: aidu.com。

用法示例:(1)从字符串的第8个字符开始读取直至结束,使用:substring('www.baidu.com',8)结果为: du.com。(2)从字符串的第8个字符开始,只取3个字符,使用:substring('www.baidu.com',8,3)结果为:du.

截取str从start开始,截取length的长度。

用法与substr()类似,此处不赘述。

substring_index(str, delim, count)

用法示例:(1)截取第二个“.”之前的所有字符:SELECT SUBSTRING_INDEX('www.baidu.com','.', 2)结果:www.baidu。(2)截取倒数第二个“.”之后的所有字符:SELECT SUBSTRING_INDEX('www.baidu.com','.',-2)结果:baidu.com。如果关键字不存在,则返回整个字符串:SELECT SUBSTRING_INDEX('www.baidu.com','zkaq', 1)结果: baidu.com。

在注入测试中,我们经常使用and、or等逻辑运算符。当这些运算符被过滤时,可以使用以下替代方法:

使用"&&"替代“and”。例如:Index.php?id= 1&& 1=1。

使用”||”替代“or”。例如:Index.php?id= 1.1|| 1=1。

使用”XOR”替代”^”。例如:select 1=1 XOR 1=1。

使用between:select database() between 0x61 and 0x7a;

使用in:SELECT* FROM user WHERE uid IN(2,3,5)

使用like:Index.php?id= 1.1 or 1 like 1

使用正则代替等号:SELECT‘Hern’ REGEXP‘[0-9]’;

可以使用union select* from(select 1)a join(select 2)b join(select 3)c替代逗号。

可以使用特殊字符如%20%09%0a%0b%0c%0d%a0代替空格,它们不会被php的\s进行匹配。使用/*!/或者#也可以代替空格进行分隔。

\N替代 null。例如:select*from duomi_admin where id=\N。

在注入过程中,可以利用以下技巧替代一些特定函数或实现某些功能:

BENCHMARK(100000,SHA1('1'))与sleep()函数效果相似。

例如,使用concat/**/()和version()。

使用Floor()、Updatexml()、Extractvalue()、Exp()、Name_const和几何函数报错注入。

可以使用Hex()、Bin()和Ord()函数来替代ascii。

这些技巧和方法可以帮助我们在注入测试中应对函数过滤问题,从而继续执行注入测试以获取敏感信息。

二、mysql如何实现split操作

1、在 MySQL中,虽然没有现成的 split()函数,但通过编程技巧可以巧妙实现字符串分割。主要有以下几种方法:

2、首先,可以自定义一个函数如 fn_split(),通过编写 SQL代码来实现字符串的按指定分隔符拆分。这个函数会根据输入的字符串和分隔符,将其拆分成多个子串。

3、另一种方法是利用存储过程,比如编写一个名为 splitString()的存储过程,它同样能处理字符串分割。这个过程通常包含输入参数、循环逻辑和结果返回等步骤,以达到分割字符串的目的。

4、对于更简洁的操作,MySQL提供了 substring_index函数,它非常实用。例如,如果你需要从字符串"1,2,3,4,5"中截取以逗号分隔的第N个元素,可以使用 substring_index函数配合子串索引实现,直接获取指定位置前的字符部分。

5、总的来说,虽然 MySQL的内置函数可能不直接支持 split操作,但通过自定义函数或存储过程,以及巧妙运用内置函数,可以轻松实现字符串的分割需求。

三、Mysql 数据字段值是用逗号隔开,如何写SQL语句

1、在处理MySQL数据字段值以逗号分隔的情况时,首先需要将传递过来的值进行分割,可以使用explode函数,例如:$var= explode(",",$str);这样就将字符串转换为了数组形式。

2、接下来,需要对数组进行循环处理,通过循环遍历数组中的每个元素,逐一进行查询操作。在查询时,有两种主要的方法可以选择:一种是按照SQL语法规则,另一种是利用PHP语法。

3、按照SQL语法进行查询时,可以使用find_in_set函数,它的基本语法格式为:find_in_set(str1, str2);其中,str1表示需要查找的字符串,str2则是一个逗号分隔的字符串列表。这个函数会返回str1在str2中的位置,如果没有找到,则返回0。

4、利用PHP语法进行查询时,可以使用strpos函数,具体语法格式为:strpos(str1, str2, start);其中,str1是待查找的字符串,str2是目标字符串,start表示查找的起始位置。该函数返回目标字符串在待查找字符串中的位置索引,如果没有找到目标字符串,则返回false。

5、两种方法各有优势,具体选择哪种方法可以根据实际需求和偏好来决定。在使用这两种方法时,需要注意处理好数组元素和查询条件之间的关系,确保查询操作能够正确执行。

6、在进行查询时,还需要注意SQL语句的安全性问题,避免SQL注入等安全风险。可以通过预处理语句或参数化查询等方式来提高查询的安全性。

7、此外,对于处理大量数据的情况,可以考虑使用IN子句或UNION操作符来提高查询效率,这样可以减少查询次数,提高程序性能。

8、总之,处理MySQL数据字段值以逗号分隔的情况时,通过合理使用分割函数和查询方法,可以实现高效的数据查询操作。