sql注入登陆(菜鸟级)

来源:互联网 发布:数据分析下载-搜狗应用 编辑:程序博客网 时间:2024/06/05 02:31

比如 我们登陆的时候身份验证,一般用如下代码

private void Login_Click(object sender, EventArgs e)        {            string id=this.txt_id.Text;            string pwd=this.txt_pwd.Text;            //string query_Sql="select * from UserR where Id='"+id+"' and Pwd='"+pwd+"' " ;            string query_Sql="select * from UserR where Id='"+id+"' and Pwd='"+pwd+"'" ;            try            {                SqlConnection conn = new SqlConnection("server=localhost;database=test;user=sa;pwd=123456");                conn.Open();                SqlCommand cmd = new SqlCommand(query_Sql, conn);                SqlDataAdapter adp = new SqlDataAdapter(cmd);                DataTable dt = new DataTable();                adp.Fill(dt);                if (dt.Rows.Count != 0)                {                    MessageBox.Show("Login success~");                }                else                {                    MessageBox.Show("Login failed~");                }            }            catch (Exception ex)            {                MessageBox.Show(ex.Message);            }            finally            {                conn.Close();            }                    }

Sql注入就是在

string query_Sql="select * from UserR where Id='"+id+"' and Pwd='"+pwd+"'" ;这句话上通过做手脚,来混淆数据库服务器的视听。

比如当数据库服务器有一条记录Id='pc20131234',Pwd='123456'

显然在数据库执行sql语句执行的是 select * from UserR where Id=‘pc20131234’ and Pwd='123456'

其中123456是从密码框直接获取的

如果我在密码框中输入的不是123456,而是    123'or Pwd!='   那么执行的sql语句就是 select * from UserR where Id=‘wz’ and Pwd='123' or Pwd!= ''  

执行的效果很显然 就是通过了应用程序的逻辑验证。

当然了,如何获取知道密码字段是Pwd并不在我们讨论的范畴之内。更何况现在有很多防止sql注入的方法。所以此贴主要用于菜鸟级知识普及




原创粉丝点击