您的位置:首页 > 其它

常用的“万能登陆密码”~

2008-02-16 14:06 204 查看
常用的“万能登陆密码”:

' or '' = '

' or 1=1;--

1 or 1=1

" or ""="

漏洞描述:

在login.asp中,接收用户输入的Userid和Password数据,并分别赋值给user和pwd,然后再用

sql="select * from admin where username="&user&" and password="&pwd&""


这句来对用户名和密码加以验证。

以常理来考虑的话,这是个很完整的程序了。而在实际的使用过程中,整套程序也的确可能正常使用。

  

但是如果Userid的值和password的值被赋于:safer' or '1'='1 这时,
sql="select * from admin where username="&user&" and password="&pwd&""
就成了:

sql="select * from reg where user='safer' or '1'='1' and pass='safer' or '1'='1'"

 

既然有这样的问题,接下来我们就来看看如何解决它。从上面的程序中各位也可以看出,只要对用户输入的数据进行严格过滤就可以了。具体可以参下面的程序:

<%

user=request.from("UserID")

pass=request.from("password")

for i=1 to len(UserID)

cl=mid(UserID,i,1)

if cl="" or us="%" or us="〈" or us="〉" then

response.redirect "Fuck you !"

response.end

end if

next

%>

同样是先取得用户输入数据,然后分析用户输入的每一个字符,如发现异常,则转到错误页面。

if cl="" or us="%" or us="〈" or us="〉" then 这一句中可以加入任意的过滤字符,跟据具体情况而定。

漏洞修补:

username=replace(trim(request("username")),"’","")

password=replace(trim(Request("password")),"’","")


把“’”给过滤了

如果你想用“’”当做密码 就用下面的方法

1、select * from user where user=’ " & User & "’ "

2、如果返回不为假,则取密码

pass=rs("passwd")

3、判断:if pass=password

4、得出结论。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: