.net中的数据连接信息的位置
来源:互联网 发布:js array sort 编辑:程序博客网 时间:2024/05/23 21:02
0x01 寻找方式
先说一般的数据库连接信息。
第一种
一般在web.config,如某套OA就是将连接字符串存放在该文件内,如下图:
第二种
有的ASP.NET程序功能较多,会自定义其它config文件,所以可能会存在多个config,而数据库连接信息就存放在其它config文件中,比如逐浪CMS(你们懂的)就有多个config文件,如下图:
但数据库相关连接信息存放在ConfigConnectionStrings.config里:
第三种
也有更标新立异的压根不存放在config中,比如信游(你们也懂的)的免费版,也有一个config文件夹,里面的文件大致如下:
数据库连接信息存放在server.apb中:
第四种
有一些比较奇葩的,直接写在代码中。这种情况下如果没有源码cs文件,就只能反编译bin目录下的dll文件了,必须扩展开来说,这是后话了。
数据库文件
那如果是access或者SQLite的情况又会有什么变化呢?他们的数据库会存放在什么位置?
现在大多CMS为了避免直接下载MDB或相关格式的问题,在.NET中采取了其它手段去防下载,比如50cms将SQLite的数据库存放在根目录的App_Data文件夹中:
2013就是50cms的数据库:
另外还有直接将access数据库存放在App_Code文件夹中的,保存为.cs后缀,由于App_Code和App_Data是无法直接通过post和get来直接访问的(你有任意文件下载的话谁都拦不住你),所以在一定程度上保证了网站的安全性,比如下面的2013.cs实际就是网站的数据库:
当然了,上面说的也是较为常见的,凡事总会有奇葩的,结合实际情况以不变应万变吧!
总结一下,数据库或者数据库相关信息会在哪里:
1. web.config 2. 其它config文件 3. 某些有特征的文件夹下的某个文件(如上面信游的那个) 4. 源码中,去dll翻翻吧 5. App_Code或App_Data 6. 其它各种奇葩情况……
下面重点说说第四种寻找方式。
0x02 反编译.NET程序
1 .NET的程序是怎样的?
我们这说的.NET不是什么www.caoliu.net,都指的是微软的开发语言。下文对.NET的分析主要是我个人的总结,并非官方语言。
那常见的.NET程序其简单构成是咋样的呢?
第一种,我们常见的桌面应用,可以是winform和console类型,比如常见的winform应用其可编译的项目源文件结构大概如下(以VS2008为例):
Bin目录是编译后的两种类型的可执行文件:
Debug编译后的程序会带有一些相关的调试信息,体积会大一点,release是发布版本的相对没带有那么多调试信息,体积会小一些。
第二种,就是我们要重点熟知的asp.net应用程序,一个很简单的asp.net应用程序的源码目录结构如下:
一般来说,我们的关注点更多不在aspx文件中,因为VS2005之后都主要是将相关的代码分离到了cs文件中。所以我们更多要关注的是.cs后缀的文件,但是在发布版的网站中,是不包含cs文件的,此时我们要关注的就是bin目录了,bin目录中有相关的dll。比如上面的小网站的bin目录只有一个dll文件:
2. 用什么反编译.NET的程序
目前相对比较有名的.NET反编译程序主要有两款:
ReflectorILSpy
Reflector是一个比较早出现而且功能也比较强大的反编译软件(在这略微提醒一下,是反编译不是反汇编),支持自定义插件和代码调试的功能,支持将源码反编译为IL语言、VB.NET、C#、Delphi.NET、F#和MC++等并可选择.NET框架的相关版本(不同版本有不同的语言特性),目前最新版已经是8.0,7.3版的截图如下:
选定某个dll后,可以在File菜单中选择导出源码:
ILSpy是一个开源且免费的反编译程序,主要功能还是反编译,不支持插件,可以翻译成的语言主要是C#、VB.NET和IL。最新版截图如下:
选中某个dll后,可以在File菜单中导出源码:
3. 反编译的简单实例
在这以简单免费的ILSPY做演示。
先来一个找源码中数据库连接信息的例子,示例是用我们上面提到的一个小网站。
先打开ILSpy,拖动相关的dll到左边的边栏中:
点击+号,展开相关的信息:
这里没有做混淆(这是后后后话了),所以反编译出来的类比较容易从名词中看出其作用。
既然要找数据库连接信息,那要先考虑一点,什么时候会进行数据库的连接?很简单!登录的时候吗,所以一般来说,都是先围绕登录点相关的类和函数进行。点击上面的login:
此时右边的分栏可以看到该login类的源码了。里面主要有两个方法:Page_Load和Button1_Click。其中Page_Load是页面加载时一定会调用的方法,Button1_Click是按钮点击事件的方法(简单说就是点击登录按钮时调用的方法)。
点击左边的+号展开两个方法,会发现Page_Load是空的,Button1_Click是包含有源代码的:
所以只能从按钮点击那下手了。
看上图标蓝色的地方,很明显就是数据库连接信息,把数据库连接信息写入到源码中,不是很利于后期的维护。
另外一篇例子,可以参考我发布在zone里的
http://zone.wooyun.org/content/3469
寻找正方教务系统数据库连接解密方法的一篇文章。
再展示下,如果没混淆和加密的.NET程序,我们可以做到什么。比如下面这个大牛写的程序:
确定就退出了,只要稍加修改马上可以去掉相关的代码,任意用了:
- .net中的数据连接信息的位置
- asp.net中获取数据连接的统计信息
- .NET用NCO连接SAP 从RFC查询数据 代码配置连接SAP的信息
- 管理.Net中数据连接管理器中的已有连接
- 如何得到QML中的TextArea的slider的位置信息
- 关于GEF 画板palette 的编辑器中的位置信息
- clucene的位置信息
- VIew的位置信息
- .NET : 如何读取图片中的元数据信息
- Scott Mitchell 的ASP.NET 2.0数据教程之73:保护连接字符串及其它设置信息
- .Net中的AutoScrollPosition问题 (panel 滚动条的位置设定)
- Ado.net连接数据库查询表信息的多种方法
- Delphi中的数据添加到Word模板的相应位置
- Java中的数据储存位置
- .NET连接数据
- .net 连接数据
- 远程数据所需的全部连接信息
- 解决手机数据连接不能查询天气信息的问题
- The connection to adb is down, and a severe error has occured完整解决办法
- UPX 3.91W 中文帮助
- Android 在Ubuntu12.04上配置两个JDK
- HDU 2051 10进制转化为2进制
- 国外bt种子网站
- .net中的数据连接信息的位置
- centos 挂载u盘
- Android Fragment完全解析,关于碎片你所需知道的一切
- 【题意】#80 A. Blackjack
- android开发环境中的 package explorer不见了
- OD常用断点
- hdu5122 K.Bro Sorting (2014ACM亚洲区域赛北京赛区重现)
- JavaScript的面向对象特性初探
- springMVC两种方式实现多文件上传及效率比较