扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
方法1先猜表名 And (Select count(*) from 表名)0 猜列名 And (Select count(列名) from 表名)0 或者也可以这样 and exists (select * from 表名) and exists (select 列名 from 表名) 返回正确的,那么写的表名或列名就是正确 这里要注意的是,exists这个不能应用于猜内容上,例如and exists (select len(user) from admin)3 这样是不行的 现在很多人都是喜欢查询里面的内容,一旦iis没有关闭错误提示的,那么就可以利用报错方法轻松获得库里面的内容 获得数据库连接用户名:;and user0 这个是小竹提出来的,我这里引用《SQL注入天书》里面的一段话来讲解: ---------------------------------------------"重点在and user0,我们知道,user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。拿一个 nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转的过程中肯定会出错,SQLServer的出错提示是:将nvarch" ---------------------------------------------看到这里大家明白了吧,报错的原理就是利用SQLserver内置的系统表进行转换查询,转换过程会出错,然后就会显示出在网页上,另外还有类似的and 1=(selet top 1 user from admin),这种语句也是可以爆出来的。;and db_name()0 则是暴数据库名。 一旦关闭了IIS报错,那么还可以用union(联合查询)来查内容,主要语句就是 Order by 10 And 1=2 union select 1,2,3,4,5,6,7,8,9,10 from admin And 1=2 union select 1,2,3,user,5,passwd,7,8,9,10 from admin
创新互联建站主营上饶网站建设的网络公司,主营网站建设方案,App定制开发,上饶h5小程序制作搭建,上饶网站营销推广欢迎上饶等地区企业咨询
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.sql.*;
public class BrowseJFrame extends JFrame implements ListSelectionListener
{
private DataBaseOperation dboper; //操纵数据库的对象
private String table; //数据库中的表名
private String[] columnNames; //指定表中所有列的中文标题
private String list_column; //表中的列
private String sort_column; //指定排序依据的列
private JList list_group; //列表框,显示分类列的不重复值
private JTable table_team; //表格组件,显示数据库中指定的内容
private DefaultTableModel tableModel; //JTable使用的模式
public BrowseJFrame(DataBaseOperation dboper, String table, String[] columnNames, String list_column, String sort_column) //构造方法,指定表名
{
this.dboper = dboper;
this.table = table;
this.columnNames = columnNames;
this.list_column = list_column;
this.sort_column = sort_column;
this.setSize(640,240); //界面设计
this.setLocation(300,240);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
JSplitPane splitter_h = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); //分割窗格,水平分割
this.add(splitter_h);
try
{
String[] groupdata = dboper.selectDistinct(table, list_column); //获得指定列不重复的值
this.list_group = new JList(groupdata);
this.list_group.setSelectedIndex(1); //选中第1项
splitter_h.add(new JScrollPane(this.list_group));
this.list_group.addListSelectionListener(this); //注册选择事件监听器
tableModel = new DefaultTableModel(columnNames,0); //默认表格模式
this.valueChanged(null); //执行列表框的选择事件处理程序
this.table_team = new JTable(tableModel);
// this.table_team.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
splitter_h.add(new JScrollPane(table_team));
}
catch(Exception e)
{
e.printStackTrace();
}
this.setVisible(true);
}
public void display(String columnValue)
{
String conditions="";
if(columnValue!=null !columnValue.equals("全部"))
conditions = this.list_column + " = '"+columnValue+"'";
try
{
dboper.select(this.table, conditions, sort_column, this.tableModel); //查询并显示指定组的数据结果集
}
catch(SQLException sqle)
{
sqle.printStackTrace();
}
}
public void valueChanged(ListSelectionEvent e) //在列表框中选择数据项时触发
{ //在表中查询指定组的数据,将数据结果集显示在表格组件中
String selecteditem = (String)list_group.getSelectedValue();
if(selecteditem!=null)
display(selecteditem);
}
public static void main(String args[])
{
String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; //指定SQL Server JDBC驱动程序
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=WorldCup2006"; //指定SQL Server数据库student的URL
String user = "sa"; //指定用户名
String password = "yeheya"; //指定用户口令
try
{
DataBaseOperation dboper = new DataBaseOperation(driver,url,user,password);
String[] team_columnNames={"组别","球队1","球队2","场次","比赛时间","队1进球数","队2进球数"};
BrowseJFrame team_browse = new BrowseJFrame(dboper,"MatchRecord", team_columnNames, "group1", "number");
team_browse.setTitle("第18届世界杯足球赛 小组赛记录表(赛程安排及战况记录)2006年6月9日~7月10日 德国");
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
/*
//小组赛记录表
//小组赛积分榜
String[] team_columnNames={"排名","组别","球队","国旗","场次","胜","平","负","进球","失球","净胜球","积分"};
BrowseJFrame team_browse = new BrowseJFrame(dboper,"TeamScore", team_columnNames, "group1", "rank");
team_browse.setTitle("第18届世界杯足球赛 小组赛积分榜");
public void valueChanged(ListSelectionEvent e) //在列表框中选择数据项时触发
{ //在表中查询指定组的数据,将数据结果集显示在表格组件中
String selecteditem = (String)list_group.getSelectedValue();
String conditions = this.list_column + " = '"+selecteditem+"'";
try
{
dboper.select(this.table, conditions, sort_column, this.dataModel); //查询并显示指定组的数据结果集
}
catch(SQLException sqle)
{
sqle.printStackTrace();
}
}
*/有点东西需要发给你
零基础学android的话首先学java语言基础,然后学一种数据库(mysql,或sqlserver),最后学android开发。
祝你成功!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流