【网络攻防技术】实验八——SQL注入实验

一、实验题目

SQL注入是一种代码注入技术,它利用web应用程序和数据库服务器之间接口中的漏洞。当用户的输入在发送到后端数据库服务器之前未在web应用程序中正确检查时,就会出现此漏洞。许多web应用程序从用户处获取输入,然后使用这些输入构造SQL查询,这样web应用程序就可以从数据库中获取信息。Web应用程序还使用SQL查询在数据库中存储信息。这些是web应用程序开发中的常见做法。如果未仔细构造SQL查询,则可能会出现SQL注入漏洞。SQL注入攻击是对web应用程序最常见的攻击之一。 在本实验室中,我们创建了一个易受SQL注入攻击的web应用程序。我们的web应用程序包含许多web开发人员所犯的常见错误。学生的目标是找到利用SQL注入漏洞的方法,演示攻击可能造成的损害,并掌握有助于抵御此类攻击的技术。

二、实验步骤及结果

Task 1: Get Familiar with SQL Statements

① 进入容器内部,首先查看自己的mysql环境id:docker ps 然后根据id进入容器内部

② 使用基本的SQL语句 在docker容器中连接localhost数据库

Task 2: SQL Injection Attack on SELECT Statement

Task 2.1: SQL Injection Attack from webpage.

① 查看登录接口unsafe_home.php源码可知

② 其中SQL语句,直接对用户传参进行拼接,那么完全可以自己合拼单引号,如下

Task 2.2: SQL Injection Attack from command line.

① 将符号进行转译,以及注释符添加 ② 访问

Task 2.3: Append a new SQL statement.

① 尝试将boby的工资置零:Admin’;update credential set salary=0 where Name=“Boby”;#

② 没有成功

Task 3: SQL Injection Attack on UPDATE Statement

Task 3.1: Modify your own salary.

① 随便选取一个注入点 110’,Salary=30001

② 修改成功

Task 3.2: Modify other people’ salary.

① 使用where语句匹配 110’, Salary=0 where ID=2#

② 查看boby工资

Task 3.3: Modify other people’ password.

① 在网站上使用的是SHA1加密后的结果,所以如果需要修改密码,应该输入加密后的结果:6e294573225d3cb28b540104260d888a7c9b4cc7

② ,Password=‘6e294573225d3cb28b540104260d888a7c9b4cc7’ WHERE ID=2;#

③ 用新密码登录,登陆成功

Task 4: Countermeasure — Prepared Statement

① 修改 unsafe.php,做如下改动

② 可以看到攻击失败

经验分享 程序员 微信小程序 职场和发展