美文网首页
sql注入例子

sql注入例子

作者: 月球的企鹅 | 来源:发表于2018-08-01 20:34 被阅读0次
package cn.itheima.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;

/**
 * 测试sql注入问题
 * 
 * @author Never Say Never
 * @date 2016年7月28日
 * @version V1.0
 */
public class TestLogin {

    @Test
    public void testLogin() {
        try {//真正的用户名和密码应该是 username和123
              login("username", "123");//下面是两个注入的例子,使用login1()可以避免被注入
            //login("gongji'or '1", "123");//这种方法使得非法的错误的用户名可以登录
            // login("gongji'or 1 or ", " or '");//这种方法在不知道用户名和密码的情况下也可以进行登录
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 用户登录方法
     * 
     * @param username
     * @param password
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public void login(String username, String password) throws ClassNotFoundException, SQLException {
        // 1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        // 2.获取连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123");
        // 3.创建执行sql语句的对象
        Statement stmt = conn.createStatement();
        // 4.书写一个sql语句
        String sql = "select * from users where " + "uname='" + username + "' and upassword='" + password + "'";
        // 5.执行sql语句
        ResultSet rs = stmt.executeQuery(sql);
        // 6.对结果集进行处理
        if (rs.next()) {
            System.out.println("恭喜您," + username + ",登录成功!");
            System.out.println(sql);
        } else {
            System.out.println("账号或密码错误!");
        }
        if (rs != null)
            rs.close();
        if (stmt != null)
            stmt.close();
        if (conn != null)
            conn.close();
    }

    public void login1(String username, String password) throws ClassNotFoundException, SQLException {
        // 1.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        // 2.获取连接
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123");
        // 3.编写sql语句
        String sql = "select * from users where uname=? and upassword=?";
        // 4.创建预处理对象
        PreparedStatement pstmt = conn.prepareStatement(sql);
        // 5.设置参数(给占位符)
        pstmt.setString(1, username);
        pstmt.setString(2, password);
        // 6.执行查询操作
        ResultSet rs = pstmt.executeQuery();
        // 7.对结果集进行处理
        if (rs.next()) {
            System.out.println("恭喜您," + username + ",登录成功!");
            System.out.println(sql);
        } else {
            System.out.println("账号或密码错误!");
        }
        if (rs != null)
            rs.close();
        if (pstmt != null)
            pstmt.close();
        if (conn != null)
            conn.close();
    }
}

补充说明:在注入过程中,发现sql 语句中的数字有或没有引号都可以正常执行,关于这个问题的讨论

相关文章

  • sql注入例子

    补充说明:在注入过程中,发现sql 语句中的数字有或没有引号都可以正常执行,关于这个问题的讨论

  • 谈谈sql注入与XSS跨站攻击

    sql注入 概述:sql注入可以理解为入侵者通过sql语法漏洞来改变原sql执行语句来达到某种目的的行为。举个例子...

  • web常见漏洞的成因和修复

    1.SQL注入 漏洞描述:SQL 注入攻击( SQL Injection ),简称注入攻击、SQL 注入,主要用于...

  • 笔记:web漏洞

    SQL注入 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,...

  • 谈谈sql注入之原理和防护(-)

    谈谈sql注入(二)谈谈sql注入(三)谈谈sql注入(四)所谓SQL注入,就是通过把SQL命令插入到Web表单提...

  • 小迪16期-20170226

    第二天:Sql注入集锦篇 1.Sql注入之access注入 2.Sql注入之mysql注入 3.Sql注入之mss...

  • 第四章 SQL 注入

    要点 SQL注入 SQL注入防护 一、SQL注入 SQL注入:黑客会通过构造一些恶意的输入参数,在应用拼接 SQL...

  • PHP代码安全之SQL注入

    PHP代码安全之SQL注入 1、什么是SQL注入? SQL攻击(英语:SQL injection),简称注入攻击,...

  • 谈谈sql注入之语句构造手法(二)

    谈谈sql注入(一)谈谈sql注入(三)谈谈sql注入(四)SQL注入的手法相当灵活,在注入的时候会碰到很多意外的...

  • SQL注入三部曲-初级

    目录 什么是SQL注入SQL注入产生的原因SQL注入攻击方式如何进行SQL注入SQL注入三部曲 1.渗透攻防WEB...

网友评论

      本文标题:sql注入例子

      本文链接:https://www.haomeiwen.com/subject/ycxdvftx.html