文章目录
一、实验题目
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,做如下改动
② 可以看到攻击失败
版权归原作者 whalien__52 所有, 如有侵权,请联系我们删除。