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 + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SQL注入测试
+ + + +
+ + + +
+ + + + +
+ +
+ +
1.输入正确的用户名和密码
2.在密码框输入:' or '1'='1
3.复选框去掉"√",再次测试
+
+ +
+ + 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