MSSQL 连接远程数据库

MSSQL 连接远程数据库,第1张

分类: 电脑/网络 >>互联网

问题描述:

本人在本地测试完网站 用的MSSQL数据库

刚开通了空间

请问如何把本地的数据库上传至服务器

越详细越傻瓜越好 谢谢

解析:

呵呵,我刚学会了,教你一招吧。

第一步:通过SQL脚本生成表结构,

可以保证本地数据库中视图、存储过程、以及表的默认值、标识、主键等属性的完整性,避免由于DTS传输引起丢失属性的问题,同时使用查询分析器执行SQL脚本,在服务器端创建表结构;

1)、请您先运行本地的企业管理器

2)、请您点击您本地的数据库点击右健-》选择生成SQL脚本

3)、选择常规-》点击全部显示,选择您想导出的脚本对象

4)、点击选项-》表脚本选项,把您所用到的脚本选中然后点击确定

5)为自己导入的.sql脚本文件命名,并保存在本地

6)、找到刚才我们保存在本地的.sql脚本文件,使用记事本打开

7)、选择编辑-》替换,把程序中所有[dbo]的字符都更改成您万网发信告知您的数据库登陆名,更换完成后保存关闭记事本

8)、通过万网通知书中的数据库登陆地址、数据库登陆名、和数据库密码,使用企业管理器连接到万网的主机服务器上,然后选择查询分析器

9)、点击打开选择刚才编辑过的.sql脚本,然后点击运行

第二步:在本地创建一个和万网主机相同权限的SQL数据库

1)、完成上面 *** 作后,请您选择数据库点击右键选择新建数据库,由于您在万网申请的是虚拟主机,万网分配的权限都是user的而不是dbo的权限,因此需要您在本地也创建一个与服务器一样的配置,以便正常完成导入 *** 作

2)、在常规-》名称处输入万网开通通知中告知您的数据库库名,然后点击确定。例如:cw01001_db

3)、选择安全性-》新建登陆

4)、在常规选择中输入名称、身份验证选择SQL Server身份验证、默认设置选择您刚刚新建的数据库

5)、在数据库访问中选中刚刚您创建的数据库,然后点击确定

6)、现在我们再回到刚才我们创建的数据库,然后点击右键-》属性

7)、选择权限,然后把相应权限赋予新建的用户名,现在我们新的数据库就已经创建完成了。下一步就是如何把老数据库中的文件导入到我们的新数据库中

第三步:将原数据库备份并还原到新创建的数据库中

1)、选择老数据库点击右键-》所有任务-》备份数据库

2)、在常规选项中-》目的中点击添加选择您需要备份出文件的位置

3)、等备份完成后,我们重新选择新数据库点击右键-》所有任务-》还原数据库

4)、在常规中选择从设备,并在参数设备中点击选择设备

5)、点击添加选择我们刚刚从老数据库中备份出来的文件,然后点击确定

6)、现在我们在还原数据库中再点击选项,把在现有数据库上强制还原选中,点击确定进行还原 *** 作,等还原完毕后我们新数据库就已经与老数据库的内容一样了,最后一步 *** 作就是把数据从新数据库中使用DTS导出协议导入到万网服务器上

第四步:通过企业管理器的DTS传输方式将本地数据导出到服务器。

1)、找到您新的数据库

2)、点击右健-》所有任务-》导出数据

3)、进入DTS导入/导出界面,直接点击下一步

4)、从选择数据源窗口中选择您本地的数据库

5)、在选择目的窗口中需要您填写服务器地址、输入万网数据库开通通知中告知您的数据库用户名和密码,等连接成功后选择万网给您开通的数据库,然后点击下一步

6)、在指定复制或查询中,您可以选择您需要导入的类型,一般为默认

7)、在选择源表和视图中,点击全选,点击下一步,这样就把您本地数据库中的文件导入到服务器上了,现在我们的导入数据库工作就已经全部完成了。

还有图片,如果你要的话,再联系我。whm8377@163

一、读取文件

按照上面的思路,先解决读取问题。这里我用了判断语句,起初我是想写出类似于 access=more

/usr/access*.*,将这个路径全部加到变量里,方便判断,因为在shell里,只能将固定文件、文件夹作为变量,变量中不能加*号(我是没找到别的方法,有知道大牛请提点下小弟),所以就想了个笨办法,用匹配关键词的方式来判断特定目录下,是apache日志,还是weblogic日志,还是IIS日志,具体判断方法如下:

if ls -l /usr/ | egrep "access"then

more /usr/access*.* | egrep "多个关键词"

else

more /usr/ex*.log | egrep “多个关键词”

fi

这样的方式来进行判断,但是这样判断有个缺点,就是中间件日志在/usr/目录下,只能存在一种,比如同时存在apache和IIS的日志,就会优先判断apache的,进而不会执行IIS日志分析的语句。而且,为了不跟之前的历史数据混乱,在脚本执行开始,清空了下数据。

file=/usr/nmgxy/

if [ -e "$file" ]then

echo "日志目录存在,跳过创建过程,该 *** 作会清空/usr/nmgxy/目录下所有数据"

echo "按回车键开始清空数据,结束请点击Ctrl+c"

read key

rm -r /usr/nmgxy/*

mkdir -p /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/ /usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/

else

mkdir -p /usr/nmgxy/ /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/

/usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/

fi

echo "分析结果日志保存在/usr/nmgxy/目录下"

echo ---------------------日志目标文件---------------------------

if ls -l /usr/ | egrep "access"then

echo --------------------统计出现次数最多的前20个IP地址-----------------

cat /usr/access*.* |awk '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/top20.log

echo "统计完成"

二、定义攻击特征

日志读取的问题解决了,接下来就是定义攻击特征的事儿了,攻击特征比较好定义。例如,SQL注入攻击的判断:

echo ------------------------SQL注入攻击sql.log----------------

echo "开始分析存在SQL注入的攻击行为,并将结果保存在/usr/nmgxy/sql/目录下"

more /usr/access*.* |egrep

"%20select%20|%20and%201=1|%20and%201=2|%20exec|%27exec|

information_schema.tables|%20information_schema.tables|%20where%20|%20union%20|%20SELECT%20|%2ctable_name%20|cmdshell|%20table_schema"

>/usr/nmgxy/sql/sql.log

echo "分析结束"

awk '{print "共检测到SQL注入攻击" NR"次"}' /usr/nmgxy/sql/sql.log|tail -n1

echo "开始统计SQL注入攻击事件中,出现频率最多的前20个IP地址"

cat /usr/nmgxy/sql/sql.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/sql/top20.log

echo ----------------------------------------------------------

more /usr/nmgxy/sql/top20.log

echo "统计结束"

我把一些常见的SQL注入攻击的特征写到了里面,去掉了MSSQL数据库存储过程以及MSSQL数据库才会出现的一些注入语句。

三、输出匹配到的含有攻击特征的记录

将匹配到的攻击特征内容,重新输出到了另外一个log里面,相当于做了一次筛选/usr/nmgxy/sql/sql.log

more /usr/access*.* |egrep

"%20select%20|%20and%201=1|%20and%201=2|%20exec|%27exec|

information_schema.tables|%20information_schema.tables|%20where%20|%20union%20|%20SELECT%20|%2ctable_name%20|cmdshell|%20table_schema"

>/usr/nmgxy/sql/sql.log

然后二次分析这个筛选过的文件,统计SQL注入攻击出现的次数

awk '{print "共检测到SQL注入攻击" NR"次"}' /usr/nmgxy/sql/sql.log|tail -n1

输出完毕后,将攻击出现最多的前20个IP地址进行统计并显示到屏幕上

echo "开始统计SQL注入攻击事件中,出现频率最多的前20个IP地址"

cat /usr/nmgxy/sql/sql.log |awk -F "[" '{print $1}' |sort |uniq -c |sort -rn |head -20 >/usr/nmgxy/sql/top20.log

echo ----------------------------------------------------------

more /usr/nmgxy/sql/top20.log

echo "统计结束"

四、输出结果

这个在代码开头,创建了一些文件夹,用来存放筛选过的记录

mkdir -p /usr/nmgxy/LFI/ /usr/nmgxy/exp/ /usr/nmgxy/sql/ /usr/nmgxy/scan/ /usr/nmgxy/xss/ /usr/nmgxy/getshell/ /usr/nmgxy/dir/

中间删删改改折腾了好几次。后来针对特定的攻击,我们比较关注(重点是比较好写的= =)的内容做了HTTP响应请求200/500的判断,并输出结果。

echo -------------------------getshell-getshell.log----------------

echo "开始分析存在getshell的攻击行为,并将结果保存在/usr/nmgxy/getshell/目录下"

more /usr/access*.* |egrep "

eval|%eval|%execute|%3binsert|%20makewebtaski%20|/div.asp|/1.asp|/1.jsp|/1.php|/1.aspx|xiaoma.jsp|tom.jsp|py.jsp|k8cmd.jsp|/k8cmd|ver007.jsp|ver008.jsp|ver007|ver008|%if|\.aar"

>>/usr/nmgxy/getshell/getshell.log

echo "分析结束"

echo "二次分析结果中HTTP响应码为200和500,结果另存为/usr/nmgxy/getshell/ok.log"

more /usr/nmgxy/getshell/getshell.log | awk '{if($9=200) {print $1" "$2"

"$3" "$4" "$6" "$7" "$8" "$9}}' >/usr/nmgxy/getshell/ok.log

more /usr/nmgxy/getshell/getshell.log | awk '{if($9=500) {print $1" "$2"

"$3" "$4" "$6" "$7" "$8" "$9}}' >>/usr/nmgxy/getshell/ok.log

echo "二次分析结束"

awk '{print "共检测到getshell行为" NR "次"}' /usr/nmgxy/getshell/getshell.log|tail -n1

echo "开始统计漏洞利用攻击事件中,出现频率最多的前20个IP地址"

cat /usr/nmgxy/getshell/getshell.log |awk -F "[" '{print $1}' |sort

|uniq -c |sort -rn |head -20 >/usr/nmgxy/getshell/top20.log

echo ---------------------------------------------------------------

more /usr/nmgxy/getshell/top20.log

echo "统计结束"

统计HTTP响应状态,IIS和apache有点区别。apache我以默认空格为分隔符,判断第9个分隔符是否为200或500,如果等于,则输出全部内容

more /usr/nmgxy/getshell/getshell.log | awk '{if($9=500) {print $1" "$2" "$3" "$4" "$6" "$7" "$8" "$9}}'

而IIS的,我则是用获取关键词的方式,来进行判断。

more /usr/nmgxy/getshell/getshell.log | egrep " 200" >/usr/nmgxy/getshell/ok.log

用egrep的方式,关键词为" 200",200前面有个空格,如果不加空格的话,很容易跟其他的参数混起来,那个时候误报就不是一点点了。例如asp?id=200,所以加入了空格做区分。

IIS和nginx的思路类似,唯一的区别就是特征码,稍微有点改动而已,这个就不一一例举了。思路就是这个思路,其实后期想把报告整体输出成HTML的方式,估计工作量挺大,这个还是得闲下来的时候,慢慢修改吧。

PS:这个脚本虽然写的比较粗糙,但是精确度还是有的,测试了几十次,精确度能达到至少80%以上。

分析1个多G的日志文件,需要大致约30多秒左右,我是在虚拟机里做的测试。虚拟机ubuntu系统,1G的内存。

不见得能帮上大忙,至少可以给大家在分析日志时节省点时间。。。。

先贴出apache、weblogic、IIS的脚本代码,weblogic的从网盘直接下载就好。apache、weblogic、IIS的脚本代码:

SA注入点指mssql数据库的的安全设置(比如没关闭数据库多行执行,user用户的跨目录浏览权限和WSCRIPT.SHELL!!)---不恰当而导致的网页注入点可以直接具有SA(administrators)权限。这种注入点叫做SA注入点。

sa权限等同于administrator的权限

当然拿到SA注入点也不一定能利用,现在被搞过的网站太多了,假如用普通GOOGLE扫描的方法扫到的注入点同样也早被别人日过了。漏洞不是被黑客们修补了就是被网站管理员修补了。

比如拿到一个注入点没法执行CMD命令,不支持多行执行。等等等等,这样的SA注入其实用处不大,能利用的可能性会大大减小,技术不够是无法利用的

by:戎府朝歌

欢迎技术交流--我的Q新群:88428980 (加的话说明来意。)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11255180.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存