SQL注入演示

 创建一个简易的登录系统/**

  tb_user  用户表

* 用户登录系统(需在数据库中创建tb_user表 )
*/
@Test
public void testUserLogin() throws Exception{
// 1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 2.获取连接
String url = "jdbc:mysql://127.0.0.1:3306/db_0915?characterEncoding=utf8&useSSL=true";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url,username,password);
// 接收用户名和密码
//原本登录方式 String name = "zhangsan";  // 用户输入用户名
//       String pwd = "123"; // 用户输入密码
     //使用SQL注入
     String name = "iaojsfona"; // 用户名乱写
     String pwd = "' or '1' = '1 "; //最简单的sql注入 String sql = "select * from tb_user where username = '" + name +
"' and password = '" + pwd + "'"; // 获取stmt对象
Statement stmt = conn.createStatement(); // 执行sql语句
ResultSet rs = stmt.executeQuery(sql); // 判断登录成功
if(rs.next()){
System.out.println("登录成功~");
}else{
System.out.println("登录失败~");
}
}

 

   原理:

    ·String sql = "select * from tb_user where username = '" + name + "' and password = '" + pwd + "'";

    把  String pwd = "' or '1' = '1 ";   带入进去

    String sql = "select * from tb_user where username = '" + name + "' and password = '" + "' or '1' = '1 " + "'"

    SQL语句变为了--      select * from tb_user where username = 'asdgadgadg' and password = '' or '1' = '1'      恒成立的

    即可被系统判定为 真  -->  登录成功

SQL注入演示的更多相关文章

  1. 利用SQL注入漏洞登录后台的实现方法

    利用SQL注入漏洞登录后台的实现方法 作者: 字体:[增加 减小] 类型:转载 时间:2012-01-12我要评论 工作需要,得好好补习下关于WEB安全方面的相关知识,故撰此文,权当总结,别无它意.读 ...

  2. 利用SQL注入漏洞登录后台的实现方法 。。。。转载

    一.SQL注入的步骤 a) 寻找注入点(如:登录界面.留言板等) b) 用户自己构造SQL语句(如:' or 1=1#,后面会讲解) c) 将sql语句发送给数据库管理系统(DBMS) d) DBMS ...

  3. [转载]mysql绑定参数bind_param原理以及防SQL注入

    假设我们的用户表中存在一行.用户名字段为username.值为aaa.密码字段为pwd.值为pwd.. 下面我们来模拟一个用户登录的过程.. <?php $username = "aa ...

  4. 利用SQL注入漏洞登录后台

    所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询 ...

  5. Java学习之路- SQL注入

    用户名: __________ 密码:——————— 假如没有使用预处理的Statement 对象 拼接字符串查数据库的话,易收到sql注入攻击: 例如说 : mysql 中   #代表的是单行注释 ...

  6. 常用数据库2 sqlite及SQL注入

    知识内容: 1.sqlite数据库介绍 2.sqlite数据库操作 3.SQL注入 一.sqlite数据库介绍 1.sqlite数据库 sqlite数据库:轻量级的数据库,一般开发中使用sqlite数 ...

  7. mysql绑定参数bind_param原理以及防SQL注入

    假设我们的用户表中存在一行.用户名字段为username.值为aaa.密码字段为pwd.值为pwd.. 下面我们来模拟一个用户登录的过程.. <?php $username = "aa ...

  8. Web安全篇之SQL注入攻击

    在网上找了一篇关于sql注入的解释文章,还有很多技术,走马观花吧 文章来源:http://www.2cto.com/article/201310/250877.html ps:直接copy,格式有点问 ...

  9. SQL注入(SQL Injection)案例和防御方案

    sql注入(SQL Injection):就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. SQL注入攻击的主要危害包括:非法读取.篡 ...

  10. sql注入二

    大家早上好!今天由我给大家带来<web安全之SQL注入篇>系列晨讲,首先对课程进行简单介绍,SQL注入篇一共分为三讲:        第一讲:“纸上谈兵:我们需要在本地架设注入环境,构造注 ...

随机推荐

  1. ABC357-C题解

    最近一直掉分,谔谔. 分析 发现机房里面除了我以外都用递归写的,那我就来讲一种非递归的吧. 考虑第 \(i\) 级地毯拆成九块以后其实就是八块第 \(i-1\) 级地毯与一块大小为 \(3^{i-1} ...

  2. [rCore学习笔记 06]运行Lib-OS

    QEMU运行第一章代码 切换分支 git checkout ch1 detail git checkout ch1 命令是用来切换到名为 ch1 的分支或者恢复工作目录中的文件到 ch1 提交的状态 ...

  3. Docker 容器开发:虚拟化

    Docker 容器开发:虚拟化 Docker 的核心价值在于虚拟化或者说环境隔离[通过虚拟化技术实现虚拟环境],解决环境配置和部署的依赖问题实现解耦 我对虚拟化的理解源自<Operating S ...

  4. NAS使用

    openwrt下的samba设置 - 百度文库 (baidu.com) openwrt下 samba设置 (wjhsh.net) opkg updateopkg install shadow-user ...

  5. k8s(3) 集群运行

    Master下面执行 mkdir -p $HOME/.kube 执行的脚本,需要读取的配置文件 cp -i /etc/kubernetes/admin.conf $HOME/.kube/config ...

  6. [香橙派开发系列]使用wiringPi控制26个引脚

    目录 前言 一.香橙派使用的包 二.使用wiringPi包的命令 1.下载wiringOP 2.gpio readall信息分析 3.设置gpio的模式 4.设置gpio输出的电平 三.wiringP ...

  7. Apache COC闪电演讲总结【OSGraph】

    大家能看到我最近一直在折腾与OSGraph这个产品相关的事情,之前在文章<妙用OSGraph:发掘GitHub知识图谱上的开源故事>中向大家阐述过这个产品的设计理念和应用价值.比方说以下问 ...

  8. 【Docker】08 部署挂载本地目录的MySQL

    拉取MySQL镜像: docker pull mysql:8.0.21 执行挂载运行MySQL容器的命令: docker run -dit \ --name mysql-test \ -p 3306: ...

  9. 【Vue】10 Vue-Cli 项目创建

    简单的Demo案例并不需要Vue-Cli,因为一个页面之内可以总揽 但是真实的项目开发,考虑代码结构,目录结构,部署,热部署,单元测试... 代码量呈几何倍数增长,而且缺少轮子就写起来很痛苦 所以必须 ...

  10. Ubuntu18.04 环境下 解决VScode中空格长度减小的问题

       问题:   Ubuntu下安装vscode后发现空格特别小,只有正常空格的一半大小 ======================================================= ...