SQL注入攻击

昨天开始接触到CTF、网络安全等知识,对网络安全方面有了初步的了解。

今天试一下攻击之前自己做的winform测试程序。

登录界面:

 

 登录的主要代码:

private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "" || textBox2.Text == "")
            {
                MessageBox.Show("账号密码不能为空");
                return;
            }
            SqlConnection conn = ConnDB.DBConnection();
            conn.Open();
            string sql = @"select * from DnUser where account = '{0}' and password = '{1}'";
            sql = string.Format(sql, textBox1.Text, textBox2.Text);
            SqlCommand cmd = new SqlCommand(sql, conn);
            string account = (string)cmd.ExecuteScalar();
            if (textBox1.Text == account)
            {
                Program.account = textBox1.Text;
                this.DialogResult = DialogResult.OK;
                conn.Close();
                this.Close();
            }
            else
            {
                MessageBox.Show(sql+"账号密码错误");
            }
            
        }

sql语句是动态拼接的,没有识别输入字符的格式,也没有过滤单引号、括号等特殊字符,这就带来了安全隐患。

开始攻击:

在账号栏输入以下语句,点击登录,就可以往数据库插入一条数据。

1';  insert into DnUser values('3','3'); --

 

 查询数据库,发现多了一条记录。

 

 接下来就可以用账号为3,密码为3的账户登录系统了。

posted @ 2022-03-10 10:11  帅气型男  阅读(62)  评论(0编辑  收藏  举报