`
ningzai
  • 浏览: 72064 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
最近访客 更多访客>>
社区版块
存档分类
最新评论

SQL数据注入漏洞-绕过登陆验证

阅读更多
//接受用户名和密码
String u=req.getParameter("username");
String p=req.getParameter("password");
........//中间没写出来
........
statement str;
ResultSet rs=str.excuteQuery("select top 1 * from usertable where usename='"+u+"'and password='"+p+"'");
//这里查询数据库是同时验证用户名和密码了 这样很容易让别人利用SQL注入漏洞绕过权限 访问数据库,这里的top是指当找到匹配的用户名之后就停止查询,不再继续,也就是只返回一条记录,这样可以节省资源
//注入漏洞实例:
select * from usertable where username='任意' and password='任意' or 1='1'';这样就轻松访问数据库。

修改方法:先根据用户名得到相应密码,然后根据得到的密码和输入的相比较,以判断是否通过验证,避免同是用用户名和密码查询。
ResultSet rs=str.excuteQuery("select top 1 password * from usertable where usename='"+u+"'");
if(rs.next()){
//说明用户存在
String dbpassword=rs.getString(1);
if(dbpassword.equals(p)){
  //用户密码合法 则通过登陆
res.sendRedirect("登陆成功之后的页面");
}
}else
{//用户名不存在,跳转
res.sendRedirect("servlet-name");
}

分享到:
评论
1 楼 cooltester 2009-09-11  
按照楼主的方法,好像不行!
附上核心代码:
Connection conn=null;//初始化  
Statement st=null; //初始化

String n=request.getParameter("name");//得到提交页的用户值;
String p=request.getParameter("pass");//得到提交页的密码值;
st=conn.createStatement();//创造执行实例
String StrSQL="select * from info_test where name='"+n+"'";
ResultSet rs=st.executeQuery(StrSQL);//执行SQL语句;

if(rs.next())
{//如果用户存在
String pw=rs.getString(3);//将库中第3列的数据取出来,即取出库中密码;
out.println(pw); //在浏览器中输出密码;
   if(pw.equals(p))//判断库中密码【pw】是否与提交页密码【p】相等;
  {
    out.println("正确登陆");//如果相等,则输出“正确登陆”;
    st.close();//实例关闭;
     conn.close();//数据库连接关闭;
     out.println("数据库关闭成功!!");//输出“数据库关闭”;
   }
     else
   {
     out.println("密码错误");
     st.close();
     conn.close();
     System.out.println("数据库关闭成功!!");
    }
   }
  else
    {
      out.println("不存在该用户");
      st.close();
      conn.close();
      System.out.println("数据库关闭成功!!");
    }

---------------------------------end
1.如果用户名不正确,那么返回“不存在该用户”,没有问题;
2.如果用户名正确,密码不管正确与否,都返回“密码错误”!!
看来 pw.equals(p) 程序没有识别对,不知何解?---------我的QQ:565547027

相关推荐

    SQL注入天书-ASP注入漏洞全接触.pdf

    首先,通过一个实际案例,解释了如何通过错误提示判断是否存在SQL注入漏洞。例如,当URL中的参数后添加单引号导致服务器返回错误,这表明可能存在注入点。接着,作者介绍了更准确的检测方法,如使用`1=1`和`1=2`的...

    SQL注入漏洞全接触--入门篇

    - **SQL注入原理**:SQL注入主要是利用应用程序对用户输入的数据没有进行有效的过滤和验证,攻击者可以通过构造特定的SQL语句来绕过正常的逻辑流程,从而实现非法访问数据库的目的。 - **防御措施**: - **参数化...

    SQL注入漏洞演示源代码

    SQL注入漏洞是网络安全领域中的一个重要话题,它涉及到数据库管理和Web应用程序的安全性。在这个"SQL注入漏洞演示源代码"中,我们可以深入理解这种攻击方式的工作原理,并学习如何防止它。 SQL注入是通过输入恶意的...

    php168sql注入漏洞

    12. **使用SQLMap工具进一步验证**:通过自动化工具SQLMap来验证是否存在SQL注入漏洞,并尝试获取更多的数据库信息。 #### SQL注入漏洞分析 - **原理**:SQL注入是一种常见的Web安全漏洞,通过向应用程序的输入字段...

    CmsEasy crossall_act.php SQL注入漏洞.md

    ### SQL注入漏洞知识点 1. **SQL注入概念** SQL注入(SQL Injection)是一种攻击技术,攻击者通过在Web表单输入或通过修改URL查询字符串来插入恶意的SQL代码,一旦网站应用未进行适当的输入验证或对用户输入的代码...

    某企业站sql注入漏洞及修复 - 漏洞发布

    ### SQL注入漏洞详解及其修复方案 #### 一、SQL注入漏洞概述 SQL注入是一种常见的Web安全漏洞,攻击者可以通过在应用程序的输入字段中插入恶意SQL语句,来操控后端数据库执行非授权操作。这种攻击可能导致敏感数据...

    SQL注入全面讲解技术文档

    以下是对SQL注入漏洞的全面讲解,包括其原理、防范方法以及高级技巧。 1. SQL注入漏洞原理: SQL注入的基础在于,当用户输入的数据直接拼接到SQL查询语句中,而没有经过适当的过滤或转义,攻击者可以构造特定的...

    SQL注入漏洞演示源代码-曾是土木人

    例如,一个简单的登录页面可能接收用户名和密码,但如果未正确处理输入,攻击者可以插入额外的SQL命令,绕过验证。 2. 演示源代码: "SQL注入漏洞实例演示"很可能是用来展示如何利用SQL注入进行攻击的实际代码。...

    自己动手编写SQL注入漏洞扫描工具

    本篇将探讨如何自己动手编写一个SQL注入漏洞扫描工具,通过分析提供的程序代码,我们可以了解基本的检测原理和技术。 首先,我们需要理解SQL注入的基本概念。当用户提交的数据被直接拼接到SQL查询中,而没有进行...

    YXcms-含有SQL注入漏洞的源码包 (3).zip

    1. **SQL注入**:SQL注入是黑客常用的攻击手段,通过在用户输入字段中插入恶意SQL语句,绕过验证,获取非授权数据。防止SQL注入的方法包括参数化查询、预编译语句、输入验证和使用ORM(对象关系映射)框架等。 2. *...

    SQL注入-概述-ppt.pptx

    1. **绕过身份认证**:攻击者可以通过构造特定的SQL语句,模拟合法用户登录。 2. **非法读取和篡改数据**:攻击者能访问和修改数据库中的任何数据。 3. **敏感信息泄露**:包括用户个人信息、公司机密等。 4. **网页...

    SQL注入攻击实验报告

    SQL注入攻击能够使攻击者绕过正常的认证机制,获取敏感信息或控制服务器,对企业和个人造成重大损失。 - **实验目的**:本实验旨在通过搭建一个简单的Web应用程序,模拟SQL注入攻击的过程,并探讨相应的防御措施,...

    第十三节 SQL注入绕过技术-01

    本节课程将详细介绍 SQL 注入绕过技术的四种方法:大小写绕过、双写绕过、编码绕过和内联注释绕过。 大小写绕过 大小写绕过是最简单的 SQL 注入绕过方法之一。当程序中设置了过滤关键字时,如果过滤过程中没有对...

Global site tag (gtag.js) - Google Analytics