常用的“万能登陆密码”:
 
' 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")),"&rsquo;","")    
password=replace(trim(Request("password")),"&rsquo;","")


把“’”给过滤了 
如果你想用“’”当做密码 就用下面的方法 

1、select * from user where user=’ " & User & "’ "  
2、如果返回不为假,则取密码  
pass=rs("passwd")  
3、判断:if pass=password  
4、得出结论。  

相关文章:

  • 2021-06-02
  • 2021-08-08
  • 2021-08-29
  • 2022-12-23
  • 2022-12-23
  • 2021-11-17
  • 2021-08-27
  • 2021-06-24
猜你喜欢
  • 2021-06-27
  • 2022-12-23
  • 2022-01-06
  • 2021-08-03
  • 2022-12-23
  • 2021-10-20
  • 2021-12-26
相关资源
相似解决方案