From eac7f9f0e139c4896cc2a90ecb76255d673174df Mon Sep 17 00:00:00 2001
From: David <8584751@qq.com>
Date: Mon, 17 Jun 2019 19:37:11 +0800
Subject: [PATCH] security
---
Csharp/MD5_test/MD5_test.sln | 25 ++
Csharp/MD5_test/MD5_test/App.config | 6 +
Csharp/MD5_test/MD5_test/Form1.Designer.cs | 238 ++++++++++++++++++
Csharp/MD5_test/MD5_test/Form1.cs | 76 ++++++
Csharp/MD5_test/MD5_test/Form1.resx | 120 +++++++++
Csharp/MD5_test/MD5_test/MD5_test.csproj | 83 ++++++
Csharp/MD5_test/MD5_test/Program.cs | 22 ++
.../MD5_test/Properties/AssemblyInfo.cs | 36 +++
.../MD5_test/Properties/Resources.Designer.cs | 71 ++++++
.../MD5_test/Properties/Resources.resx | 117 +++++++++
.../MD5_test/Properties/Settings.Designer.cs | 30 +++
.../MD5_test/Properties/Settings.settings | 7 +
...346\210\252\345\233\27620190617193429.png" | Bin 0 -> 13249 bytes
SQL_Injection/Login/Login/Login.sln | 25 ++
SQL_Injection/Login/Login/Login/Default.aspx | 99 ++++++++
.../Login/Login/Login/Default.aspx.cs | 91 +++++++
.../Login/Login/Default.aspx.designer.cs | 104 ++++++++
SQL_Injection/Login/Login/Login/Login.csproj | 140 +++++++++++
SQL_Injection/Login/Login/Login/Main.aspx | 37 +++
SQL_Injection/Login/Login/Login/Main.aspx.cs | 17 ++
.../Login/Login/Login/Main.aspx.designer.cs | 42 ++++
.../Login/Login/Properties/AssemblyInfo.cs | 35 +++
.../PublishProfiles/CustomProfile.pubxml | 17 ++
.../Login/Login/Login/Web.Debug.config | 31 +++
.../Login/Login/Login/Web.Release.config | 32 +++
SQL_Injection/Login/Login/Login/Web.config | 27 ++
SQL_Injection/Login/Login/Login/about.html | 10 +
.../Login/Login/Login/packages.config | 4 +
28 files changed, 1542 insertions(+)
create mode 100644 Csharp/MD5_test/MD5_test.sln
create mode 100644 Csharp/MD5_test/MD5_test/App.config
create mode 100644 Csharp/MD5_test/MD5_test/Form1.Designer.cs
create mode 100644 Csharp/MD5_test/MD5_test/Form1.cs
create mode 100644 Csharp/MD5_test/MD5_test/Form1.resx
create mode 100644 Csharp/MD5_test/MD5_test/MD5_test.csproj
create mode 100644 Csharp/MD5_test/MD5_test/Program.cs
create mode 100644 Csharp/MD5_test/MD5_test/Properties/AssemblyInfo.cs
create mode 100644 Csharp/MD5_test/MD5_test/Properties/Resources.Designer.cs
create mode 100644 Csharp/MD5_test/MD5_test/Properties/Resources.resx
create mode 100644 Csharp/MD5_test/MD5_test/Properties/Settings.Designer.cs
create mode 100644 Csharp/MD5_test/MD5_test/Properties/Settings.settings
create mode 100644 "Csharp/MD5_test/QQ\346\210\252\345\233\27620190617193429.png"
create mode 100644 SQL_Injection/Login/Login/Login.sln
create mode 100644 SQL_Injection/Login/Login/Login/Default.aspx
create mode 100644 SQL_Injection/Login/Login/Login/Default.aspx.cs
create mode 100644 SQL_Injection/Login/Login/Login/Default.aspx.designer.cs
create mode 100644 SQL_Injection/Login/Login/Login/Login.csproj
create mode 100644 SQL_Injection/Login/Login/Login/Main.aspx
create mode 100644 SQL_Injection/Login/Login/Login/Main.aspx.cs
create mode 100644 SQL_Injection/Login/Login/Login/Main.aspx.designer.cs
create mode 100644 SQL_Injection/Login/Login/Login/Properties/AssemblyInfo.cs
create mode 100644 SQL_Injection/Login/Login/Login/Properties/PublishProfiles/CustomProfile.pubxml
create mode 100644 SQL_Injection/Login/Login/Login/Web.Debug.config
create mode 100644 SQL_Injection/Login/Login/Login/Web.Release.config
create mode 100644 SQL_Injection/Login/Login/Login/Web.config
create mode 100644 SQL_Injection/Login/Login/Login/about.html
create mode 100644 SQL_Injection/Login/Login/Login/packages.config
diff --git a/Csharp/MD5_test/MD5_test.sln b/Csharp/MD5_test/MD5_test.sln
new file mode 100644
index 0000000..23fff23
--- /dev/null
+++ b/Csharp/MD5_test/MD5_test.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.29009.5
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MD5_test", "MD5_test\MD5_test.csproj", "{CF581D61-F819-4B98-9CCF-2F7EF7BE19FE}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {CF581D61-F819-4B98-9CCF-2F7EF7BE19FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CF581D61-F819-4B98-9CCF-2F7EF7BE19FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CF581D61-F819-4B98-9CCF-2F7EF7BE19FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CF581D61-F819-4B98-9CCF-2F7EF7BE19FE}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {A6ECF26E-2F67-406F-8BFF-E338A527053C}
+ EndGlobalSection
+EndGlobal
diff --git a/Csharp/MD5_test/MD5_test/App.config b/Csharp/MD5_test/MD5_test/App.config
new file mode 100644
index 0000000..56efbc7
--- /dev/null
+++ b/Csharp/MD5_test/MD5_test/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Csharp/MD5_test/MD5_test/Form1.Designer.cs b/Csharp/MD5_test/MD5_test/Form1.Designer.cs
new file mode 100644
index 0000000..872341b
--- /dev/null
+++ b/Csharp/MD5_test/MD5_test/Form1.Designer.cs
@@ -0,0 +1,238 @@
+namespace MD5_test
+{
+ partial class Form1
+ {
+ ///
+ /// 必需的设计器变量。
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// 清理所有正在使用的资源。
+ ///
+ /// 如果应释放托管资源,为 true;否则为 false。
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows 窗体设计器生成的代码
+
+ ///
+ /// 设计器支持所需的方法 - 不要修改
+ /// 使用代码编辑器修改此方法的内容。
+ ///
+ private void InitializeComponent()
+ {
+ this.label6 = new System.Windows.Forms.Label();
+ this.textBox4 = new System.Windows.Forms.TextBox();
+ this.button2 = new System.Windows.Forms.Button();
+ this.button1 = new System.Windows.Forms.Button();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.textBox3 = new System.Windows.Forms.TextBox();
+ this.textBox2 = new System.Windows.Forms.TextBox();
+ this.textBox1 = new System.Windows.Forms.TextBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label7 = new System.Windows.Forms.Label();
+ this.label8 = new System.Windows.Forms.Label();
+ this.label9 = new System.Windows.Forms.Label();
+ this.label10 = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // label6
+ //
+ this.label6.AutoSize = true;
+ this.label6.BackColor = System.Drawing.Color.PaleGreen;
+ this.label6.Location = new System.Drawing.Point(12, 360);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(95, 12);
+ this.label6.TabIndex = 26;
+ this.label6.Text = "MD5是不可逆的。";
+ //
+ // textBox4
+ //
+ this.textBox4.Location = new System.Drawing.Point(141, 254);
+ this.textBox4.Name = "textBox4";
+ this.textBox4.Size = new System.Drawing.Size(209, 21);
+ this.textBox4.TabIndex = 25;
+ //
+ // button2
+ //
+ this.button2.Location = new System.Drawing.Point(275, 292);
+ this.button2.Name = "button2";
+ this.button2.Size = new System.Drawing.Size(75, 23);
+ this.button2.TabIndex = 24;
+ this.button2.Text = "读取";
+ this.button2.UseVisualStyleBackColor = true;
+ this.button2.Click += new System.EventHandler(this.Button2_Click);
+ //
+ // button1
+ //
+ this.button1.Location = new System.Drawing.Point(275, 176);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(75, 23);
+ this.button1.TabIndex = 23;
+ this.button1.Text = "写入";
+ this.button1.UseVisualStyleBackColor = true;
+ this.button1.Click += new System.EventHandler(this.Button1_Click);
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(48, 167);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(41, 12);
+ this.label5.TabIndex = 22;
+ this.label5.Text = "密码:";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(48, 125);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(53, 12);
+ this.label4.TabIndex = 21;
+ this.label4.Text = "用户名:";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Font = new System.Drawing.Font("宋体", 24F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.label3.Location = new System.Drawing.Point(71, 26);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(255, 33);
+ this.label3.TabIndex = 20;
+ this.label3.Text = "使用MD5加密数据";
+ //
+ // textBox3
+ //
+ this.textBox3.Location = new System.Drawing.Point(141, 227);
+ this.textBox3.Name = "textBox3";
+ this.textBox3.Size = new System.Drawing.Size(209, 21);
+ this.textBox3.TabIndex = 19;
+ //
+ // textBox2
+ //
+ this.textBox2.Location = new System.Drawing.Point(141, 149);
+ this.textBox2.Name = "textBox2";
+ this.textBox2.Size = new System.Drawing.Size(209, 21);
+ this.textBox2.TabIndex = 18;
+ //
+ // textBox1
+ //
+ this.textBox1.Location = new System.Drawing.Point(141, 122);
+ this.textBox1.Name = "textBox1";
+ this.textBox1.Size = new System.Drawing.Size(209, 21);
+ this.textBox1.TabIndex = 17;
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.BackColor = System.Drawing.Color.Aqua;
+ this.label2.Location = new System.Drawing.Point(48, 200);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(89, 12);
+ this.label2.TabIndex = 16;
+ this.label2.Text = "加密后读出密码";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.BackColor = System.Drawing.Color.Aqua;
+ this.label1.Location = new System.Drawing.Point(48, 88);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(245, 12);
+ this.label1.TabIndex = 15;
+ this.label1.Text = "输入用户名和密码,密码加密后存储到数据库";
+ //
+ // label7
+ //
+ this.label7.AutoSize = true;
+ this.label7.Location = new System.Drawing.Point(48, 230);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(53, 12);
+ this.label7.TabIndex = 27;
+ this.label7.Text = "用户名:";
+ //
+ // label8
+ //
+ this.label8.AutoSize = true;
+ this.label8.Location = new System.Drawing.Point(48, 263);
+ this.label8.Name = "label8";
+ this.label8.Size = new System.Drawing.Size(41, 12);
+ this.label8.TabIndex = 28;
+ this.label8.Text = "密码:";
+ //
+ // label9
+ //
+ this.label9.AutoSize = true;
+ this.label9.Location = new System.Drawing.Point(12, 387);
+ this.label9.Name = "label9";
+ this.label9.Size = new System.Drawing.Size(245, 12);
+ this.label9.TabIndex = 29;
+ this.label9.Text = "加密之后就无法解密,取用户名和密码时候,";
+ //
+ // label10
+ //
+ this.label10.AutoSize = true;
+ this.label10.Location = new System.Drawing.Point(12, 414);
+ this.label10.Name = "label10";
+ this.label10.Size = new System.Drawing.Size(365, 12);
+ this.label10.TabIndex = 30;
+ this.label10.Text = "需要再加密一遍用户输入的数据与数据库中已加密的数据进行比对。";
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(402, 450);
+ this.Controls.Add(this.label10);
+ this.Controls.Add(this.label9);
+ this.Controls.Add(this.label8);
+ this.Controls.Add(this.label7);
+ this.Controls.Add(this.label6);
+ this.Controls.Add(this.textBox4);
+ this.Controls.Add(this.button2);
+ this.Controls.Add(this.button1);
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.textBox3);
+ this.Controls.Add(this.textBox2);
+ this.Controls.Add(this.textBox1);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.label1);
+ this.Name = "Form1";
+ this.Text = "MD5 test";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+ private System.Windows.Forms.Label label6;
+ private System.Windows.Forms.TextBox textBox4;
+ private System.Windows.Forms.Button button2;
+ private System.Windows.Forms.Button button1;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.TextBox textBox3;
+ private System.Windows.Forms.TextBox textBox2;
+ private System.Windows.Forms.TextBox textBox1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label7;
+ private System.Windows.Forms.Label label8;
+ private System.Windows.Forms.Label label9;
+ private System.Windows.Forms.Label label10;
+ }
+}
+
diff --git a/Csharp/MD5_test/MD5_test/Form1.cs b/Csharp/MD5_test/MD5_test/Form1.cs
new file mode 100644
index 0000000..3350aaa
--- /dev/null
+++ b/Csharp/MD5_test/MD5_test/Form1.cs
@@ -0,0 +1,76 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Data.SqlClient;
+using System.Drawing;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace MD5_test
+{
+ public partial class Form1 : Form
+ {
+ public Form1()
+ {
+ InitializeComponent();
+ }
+ string username; //取出账号
+ string password; //取出密码
+ private void Button1_Click(object sender, EventArgs e)
+ {
+ username = textBox1.Text.Trim(); //取出账号
+ password = textBox2.Text.Trim(); //取出密码
+
+ //string connstr = ConfigurationManager.ConnectionStrings["connectionString"].ToString(); //读取连接字符串
+ string myConnString = "Data Source=.;Initial Catalog=Test;Persist Security Info=True;User ID=sa;Password=sql";
+ SqlConnection sqlConnection = new SqlConnection(myConnString); //实例化连接对象
+ sqlConnection.Open();
+ password = EncryptWithMD5(password);
+ string insertStr = "INSERT INTO usertable32 (userid,password) " + "VALUES ('" + username + "','" + password + "')";
+ SqlCommand cmd = new SqlCommand(insertStr, sqlConnection);
+ cmd.ExecuteNonQuery();
+ sqlConnection.Close();
+ MessageBox.Show("成功写入");
+ }
+
+ private void Button2_Click(object sender, EventArgs e)
+ {
+ string myConnString = "Data Source=.;Initial Catalog=Test;Persist Security Info=True;User ID=sa;Password=sql";
+ username = textBox1.Text.Trim(); //取出账号
+ SqlConnection sqlConnection = new SqlConnection(myConnString); //实例化连接对象
+ sqlConnection.Open();
+ string sql = "select userid,password from usertable32 where userid = '" + username + "'";
+ SqlCommand com = new SqlCommand(sql, sqlConnection);
+ SqlDataReader read = com.ExecuteReader();
+ while (read.Read())
+ {
+ string myUsername = read["userid"].ToString();
+ string myPassword = read["password"].ToString();
+ textBox3.Text = myUsername;
+ textBox4.Text = myPassword;
+ }
+ sqlConnection.Close();
+ MessageBox.Show("成功读取");
+ }
+
+
+ public static string EncryptWithMD5(string source)
+ {
+ byte[] sor = Encoding.UTF8.GetBytes(source);
+ MD5 md5 = MD5.Create();
+ byte[] result = md5.ComputeHash(sor);
+ StringBuilder strbul = new StringBuilder(40);
+ for (int i = 0; i < result.Length; i++)
+ {
+ strbul.Append(result[i].ToString("x2"));//加密结果"x2"结果为32位,"x3"结果为48位,"x4"结果为64位
+ }
+ return strbul.ToString();
+ }
+
+
+ }
+}
diff --git a/Csharp/MD5_test/MD5_test/Form1.resx b/Csharp/MD5_test/MD5_test/Form1.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/Csharp/MD5_test/MD5_test/Form1.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Csharp/MD5_test/MD5_test/MD5_test.csproj b/Csharp/MD5_test/MD5_test/MD5_test.csproj
new file mode 100644
index 0000000..d6d9303
--- /dev/null
+++ b/Csharp/MD5_test/MD5_test/MD5_test.csproj
@@ -0,0 +1,83 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {CF581D61-F819-4B98-9CCF-2F7EF7BE19FE}
+ WinExe
+ MD5_test
+ MD5_test
+ v4.7.2
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ Form1.cs
+
+
+
+
+ Form1.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Csharp/MD5_test/MD5_test/Program.cs b/Csharp/MD5_test/MD5_test/Program.cs
new file mode 100644
index 0000000..069351e
--- /dev/null
+++ b/Csharp/MD5_test/MD5_test/Program.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace MD5_test
+{
+ static class Program
+ {
+ ///
+ /// 应用程序的主入口点。
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new Form1());
+ }
+ }
+}
diff --git a/Csharp/MD5_test/MD5_test/Properties/AssemblyInfo.cs b/Csharp/MD5_test/MD5_test/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..587d11d
--- /dev/null
+++ b/Csharp/MD5_test/MD5_test/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("MD5_test")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("MD5_test")]
+[assembly: AssemblyCopyright("Copyright © 2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("cf581d61-f819-4b98-9ccf-2f7ef7be19fe")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 生成号
+// 修订号
+//
+//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
+//通过使用 "*",如下所示:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Csharp/MD5_test/MD5_test/Properties/Resources.Designer.cs b/Csharp/MD5_test/MD5_test/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..b979812
--- /dev/null
+++ b/Csharp/MD5_test/MD5_test/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// 此代码由工具生成。
+// 运行时版本: 4.0.30319.42000
+//
+// 对此文件的更改可能导致不正确的行为,如果
+// 重新生成代码,则所做更改将丢失。
+//
+//------------------------------------------------------------------------------
+
+namespace MD5_test.Properties
+{
+
+
+ ///
+ /// 强类型资源类,用于查找本地化字符串等。
+ ///
+ // 此类是由 StronglyTypedResourceBuilder
+ // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+ // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+ // (以 /str 作为命令选项),或重新生成 VS 项目。
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// 返回此类使用的缓存 ResourceManager 实例。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MD5_test.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// 覆盖当前线程的 CurrentUICulture 属性
+ /// 使用此强类型的资源类的资源查找。
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/Csharp/MD5_test/MD5_test/Properties/Resources.resx b/Csharp/MD5_test/MD5_test/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/Csharp/MD5_test/MD5_test/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Csharp/MD5_test/MD5_test/Properties/Settings.Designer.cs b/Csharp/MD5_test/MD5_test/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..adf5368
--- /dev/null
+++ b/Csharp/MD5_test/MD5_test/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace MD5_test.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/Csharp/MD5_test/MD5_test/Properties/Settings.settings b/Csharp/MD5_test/MD5_test/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/Csharp/MD5_test/MD5_test/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git "a/Csharp/MD5_test/QQ\346\210\252\345\233\27620190617193429.png" "b/Csharp/MD5_test/QQ\346\210\252\345\233\27620190617193429.png"
new file mode 100644
index 0000000000000000000000000000000000000000..b66988baf9f340980526851f0018c4d7ed4a7578
GIT binary patch
literal 13249
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
pv3)$1aHFnVK&db`%ATx_^w%dh{M
+
+
+
+
+
+
+ SQL injection
+
+
+
+
+
+
diff --git a/SQL_Injection/Login/Login/Login/Default.aspx.cs b/SQL_Injection/Login/Login/Login/Default.aspx.cs
new file mode 100644
index 0000000..78ecc88
--- /dev/null
+++ b/SQL_Injection/Login/Login/Login/Default.aspx.cs
@@ -0,0 +1,91 @@
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.OleDb;
+using System.Data.SqlClient;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace Login
+{
+ public partial class Default : System.Web.UI.Page
+ {
+ protected void Page_Load(object sender, EventArgs e)
+ {
+
+ }
+
+ protected void Button1_Click(object sender, EventArgs e)
+ {
+ string name = TextBox1.Text;
+ string pwd = TextBox2.Text;
+ UserLogin(name, pwd);
+ }
+
+
+ private void UserLogin(string _loginname, string _loginpwd)
+ {
+ SqlConnection conn = new SqlConnection
+ {
+ ConnectionString = "User ID=sa;Initial Catalog=Test;Data Source= (local);Password=sql"
+ };
+
+ SqlCommand cmd;
+ string sql;
+
+ if (CheckBox1.Checked)
+ {
+ sql = "select * from usertable Where userid='" + _loginname + "' and password='" + _loginpwd + "'"; //创建查询语句
+ cmd = new SqlCommand(sql, conn);
+ }
+ else
+ {
+ sql = "select * from usertable where userid=@username and password=@password"; //使用参数控制传递,避免SQL注入
+ cmd = new SqlCommand(sql, conn);
+ cmd.Parameters.Add("@username", SqlDbType.VarChar, 10);
+ cmd.Parameters["@username"].Value = _loginname;
+ cmd.Parameters.Add("@password", SqlDbType.VarChar, 10);
+ cmd.Parameters["@password"].Value = _loginpwd;
+ }
+ Label4.Text = sql;
+ try
+ {
+ // 打开连接
+ if (conn.State == ConnectionState.Closed)
+ {
+ conn.Open();
+ }
+
+ SqlDataReader sqlDataReader = cmd.ExecuteReader(); //从数据库中读取数据流存入reader中
+ if (sqlDataReader.Read()) //从sdr中读取下一行数据,如果没有数据,sdr.Read()返回flase
+ {
+ Label3.Text = "登录成功。您的用户名:" + sqlDataReader[0] + ",您的密码:" + sqlDataReader[1];
+ Button2.Enabled = true;
+ }
+ else
+ {
+ Label3.Text = "登录失败。输入账号或密码错误";
+ Button2.Enabled = false;
+ }
+ sqlDataReader.Close();
+
+ }
+ catch (Exception ee)
+ {
+ Response.Write("连接数据库失败!" + ee.ToString());
+ }
+ finally
+ {
+ conn.Close();
+ }
+
+ }
+
+ protected void Button2_Click(object sender, EventArgs e)
+ {
+ Response.Redirect("Main.aspx");
+ }
+ }
+}
\ No newline at end of file
diff --git a/SQL_Injection/Login/Login/Login/Default.aspx.designer.cs b/SQL_Injection/Login/Login/Login/Default.aspx.designer.cs
new file mode 100644
index 0000000..d07246e
--- /dev/null
+++ b/SQL_Injection/Login/Login/Login/Default.aspx.designer.cs
@@ -0,0 +1,104 @@
+//------------------------------------------------------------------------------
+// <自动生成>
+// 此代码由工具生成。
+//
+// 对此文件的更改可能导致不正确的行为,如果
+// 重新生成代码,则所做更改将丢失。
+// 自动生成>
+//------------------------------------------------------------------------------
+
+namespace Login {
+
+ public partial class Default {
+
+ ///
+ /// form1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlForm form1;
+
+ ///
+ /// Label1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.WebControls.Label Label1;
+
+ ///
+ /// TextBox1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.WebControls.TextBox TextBox1;
+
+ ///
+ /// Label2 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.WebControls.Label Label2;
+
+ ///
+ /// TextBox2 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.WebControls.TextBox TextBox2;
+
+ ///
+ /// CheckBox1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.WebControls.CheckBox CheckBox1;
+
+ ///
+ /// Button1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.WebControls.Button Button1;
+
+ ///
+ /// Button2 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.WebControls.Button Button2;
+
+ ///
+ /// Label3 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.WebControls.Label Label3;
+
+ ///
+ /// Label4 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.WebControls.Label Label4;
+ }
+}
diff --git a/SQL_Injection/Login/Login/Login/Login.csproj b/SQL_Injection/Login/Login/Login/Login.csproj
new file mode 100644
index 0000000..86a967d
--- /dev/null
+++ b/SQL_Injection/Login/Login/Login/Login.csproj
@@ -0,0 +1,140 @@
+
+
+
+
+ Debug
+ AnyCPU
+
+
+ 2.0
+ {E7690BF9-0D2A-48C3-86EA-B60E086963F4}
+ {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
+ Library
+ Properties
+ Login
+ Login
+ v4.7.2
+ true
+
+ 44361
+
+
+
+
+
+
+
+
+ true
+ full
+ false
+ bin\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ true
+ pdbonly
+ true
+ bin\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
+
+
+
+
+
+
+
+
+
+
+ Default.aspx
+ ASPXCodeBehind
+
+
+ Default.aspx
+
+
+ Main.aspx
+ ASPXCodeBehind
+
+
+ Main.aspx
+
+
+
+
+
+
+
+ Web.config
+
+
+ Web.config
+
+
+
+ 10.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+
+
+
+
+
+
+
+
+ True
+ True
+ 5367
+ /
+ https://localhost:44361/
+ False
+ False
+
+
+ False
+
+
+
+
+
+
+ 这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。
+
+
+
+
+
\ No newline at end of file
diff --git a/SQL_Injection/Login/Login/Login/Main.aspx b/SQL_Injection/Login/Login/Login/Main.aspx
new file mode 100644
index 0000000..55fa4fa
--- /dev/null
+++ b/SQL_Injection/Login/Login/Login/Main.aspx
@@ -0,0 +1,37 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Main.aspx.cs" Inherits="Login.Main" %>
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SQL_Injection/Login/Login/Login/Main.aspx.cs b/SQL_Injection/Login/Login/Login/Main.aspx.cs
new file mode 100644
index 0000000..ee64519
--- /dev/null
+++ b/SQL_Injection/Login/Login/Login/Main.aspx.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+
+namespace Login
+{
+ public partial class Main : System.Web.UI.Page
+ {
+ protected void Page_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/SQL_Injection/Login/Login/Login/Main.aspx.designer.cs b/SQL_Injection/Login/Login/Login/Main.aspx.designer.cs
new file mode 100644
index 0000000..c130fc8
--- /dev/null
+++ b/SQL_Injection/Login/Login/Login/Main.aspx.designer.cs
@@ -0,0 +1,42 @@
+//------------------------------------------------------------------------------
+// <自动生成>
+// 此代码由工具生成。
+//
+// 对此文件的更改可能导致不正确的行为,如果
+// 重新生成代码,则所做更改将丢失。
+// 自动生成>
+//------------------------------------------------------------------------------
+
+namespace Login {
+
+
+ public partial class Main {
+
+ ///
+ /// form1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlForm form1;
+
+ ///
+ /// GridView1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.WebControls.GridView GridView1;
+
+ ///
+ /// SqlDataSource1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.WebControls.SqlDataSource SqlDataSource1;
+ }
+}
diff --git a/SQL_Injection/Login/Login/Login/Properties/AssemblyInfo.cs b/SQL_Injection/Login/Login/Login/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..d26a280
--- /dev/null
+++ b/SQL_Injection/Login/Login/Login/Properties/AssemblyInfo.cs
@@ -0,0 +1,35 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 有关程序集的常规信息通过下列特性集
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("Login")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Login")]
+[assembly: AssemblyCopyright("Copyright © 2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+// 对 COM 组件不可见。如果需要
+// 从 COM 访问此程序集中的某个类型,请针对该类型将 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于 typelib 的 ID
+[assembly: Guid("e7690bf9-0d2a-48c3-86ea-b60e086963f4")]
+
+// 程序集的版本信息由下列四个值组成:
+//
+// 主版本
+// 次版本
+// 内部版本号
+// 修订版本
+//
+// 可以指定所有值,也可以使用“修订号”和“内部版本号”的默认值,
+// 方法是按如下所示使用 "*":
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/SQL_Injection/Login/Login/Login/Properties/PublishProfiles/CustomProfile.pubxml b/SQL_Injection/Login/Login/Login/Properties/PublishProfiles/CustomProfile.pubxml
new file mode 100644
index 0000000..24704bb
--- /dev/null
+++ b/SQL_Injection/Login/Login/Login/Properties/PublishProfiles/CustomProfile.pubxml
@@ -0,0 +1,17 @@
+
+
+
+
+ FileSystem
+ Release
+ Any CPU
+
+ True
+ False
+ E:\发布
+ False
+
+
\ No newline at end of file
diff --git a/SQL_Injection/Login/Login/Login/Web.Debug.config b/SQL_Injection/Login/Login/Login/Web.Debug.config
new file mode 100644
index 0000000..b9a9fde
--- /dev/null
+++ b/SQL_Injection/Login/Login/Login/Web.Debug.config
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SQL_Injection/Login/Login/Login/Web.Release.config b/SQL_Injection/Login/Login/Login/Web.Release.config
new file mode 100644
index 0000000..755e745
--- /dev/null
+++ b/SQL_Injection/Login/Login/Login/Web.Release.config
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SQL_Injection/Login/Login/Login/Web.config b/SQL_Injection/Login/Login/Login/Web.config
new file mode 100644
index 0000000..50d3579
--- /dev/null
+++ b/SQL_Injection/Login/Login/Login/Web.config
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SQL_Injection/Login/Login/Login/about.html b/SQL_Injection/Login/Login/Login/about.html
new file mode 100644
index 0000000..ac4c744
--- /dev/null
+++ b/SQL_Injection/Login/Login/Login/about.html
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+ 河北大学 网络空间安全与计算机学院 2019.6
+
+
\ No newline at end of file
diff --git a/SQL_Injection/Login/Login/Login/packages.config b/SQL_Injection/Login/Login/Login/packages.config
new file mode 100644
index 0000000..cd04979
--- /dev/null
+++ b/SQL_Injection/Login/Login/Login/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file