• 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的账户登录系统了。

  • 相关阅读:
    Java之多线程(实现Runnable接口)
    Java之使用HttpClient发送GET请求
    hbase中文内容编码转换
    Java之utf8中文编码转换
    Java之正则表达式
    Java之List排序功能举例
    maven测试时中文乱码问题解决方法
    Hbase之IP变更后无法启动问题解决
    Hbase远程连接:Can't get the locations
    重启Hbase命令
  • 原文地址:https://www.cnblogs.com/fangjb/p/15988272.html
Copyright © 2020-2023  润新知