您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
06-JDBC-API详解-PreparedStatement-SQL注入演示
发布时间:2024-11-13 21:38:24编辑:雪饮阅读()
-
sql注入其实很好理解。
实现如
@Test
public void testSqlInject() throws Exception {
String url="jdbc:mysql://192.168.217.132/demo?useSSL=false";
String username="root";
String password="1448169a3cb137d7";
Connection conn= DriverManager.getConnection(url,username,password);
Statement stmt=conn.createStatement();
String userName="张三";
String userPassword="123";
String userPassword2="' or '1' = '1";
String sql6="select * from user where name = '"+userName+"' and password = '"+userPassword+"'";
String sql7="select * from user where name = '"+userName+"' and password = '"+userPassword2+"'";
ResultSet rs=stmt.executeQuery(sql6);
if(rs.next()){
System.out.println("登录成功");
System.out.println("登录sql:"+sql6);
}
rs=stmt.executeQuery(sql7);
if(rs.next()){
System.out.println("注入登录成功");
System.out.println("登录sql:"+sql7);
}
rs.close();
stmt.close();
conn.close();
}
这里看到是有两个sql,但不同的是用户密码是伪造的。
但是伪造的也能登录成功。
根据运行后的结果中两个sql:
登录成功
登录sql:select * from user where name = '张三' and password = '123'
注入登录成功
登录sql:select * from user where name = '张三' and password = '' or '1' = '1'
就很容易看出端倪,就是sql的拆分重组。
关键字词:JDBC,sql注入