网络攻防--SQL注入

一、实验题目

        SQL注入是一种代码注入技术,它利用web应用程序和数据库服务器之间接口中的漏洞。当用户的输入在发送到后端数据库服务器之前未在web应用程序中正确检查时,就会出现此漏洞。许多web应用程序从用户处获取输入,然后使用这些输入构造SQL查询,这样web应用程序就可以从数据库中获取信息。Web应用程序还使用SQL查询在数据库中存储信息。这些是web应用程序开发中的常见做法。如果未仔细构造SQL查询,则可能会出现SQL注入漏洞。SQL注入攻击是对web应用程序最常见的攻击之一。

        在本实验室中,我们创建了一个易受SQL注入攻击的web应用程序。我们的web应用程序包含许多web开发人员所犯的常见错误。学生的目标是找到利用SQL注入漏洞的方法,演示攻击可能造成的损害,并掌握有助于抵御此类攻击的技术。

二、实验步骤及结果

Task1:Get Familiar with SQL Statements

1.根据ID进入docker数据库容器的内部,登录数据库用户信息,对于数据库执行数据库操作。

2.进入目标数据库后查询表格信息。

3.查找出Alice的所有信息。

Task2:Task 2: SQL Injection Attack on SELECT Statement

2.1 SQL Injection Attack from webpage.

1.观察最终得到的SQL查询语句,可以得知,我们只需要将后面的对password的要求注释掉即可。SQL语句中可以适用’--‘或者‘#’注释后面的内容。所以,可以适用 “Admin’ and 1=1 -- “ 或者 “Admin’#”来实现我们的目标。

2.结果展示,成功登录Admin账户。

2.2: SQL Injection Attack from command line.

1.使用命令行连接到该站点,可以使用刚才登录获得的url,将我们后面填写的信息进行转译。其中 ‘ 对应 %17 、# 对应 %23。

2.3: Append a new SQL statement

1.SQL语句使用分号间隔。所以可以在2.1的基础上添加分号后继续添加第二条语句。例如:Admin' ;delete * from credential where Name = 'Ted';#

2.观察结果。

观察结果:不能成功注入。

查找对策:查找原因发现,这种攻击对mysql无效,因为PHP中mysql扩展的query()函数禁止执行多条语句。除非修改unsafe_home.php中使用的函数把query修改为multi_query。

Task3:SQL Injection Attack on UPDATE Statement

3.1: Modify your own salary.

1.观察了输入字符之后形成的查询语句,可以发现,可以使用,将不同的字符分割开,这样就可以插入其他的修改信息。并且查询得知,工资字段的名称为 salary。所以插入如下信息:15278',salary =600000,phonenumber='123

2.查询修改结果。

3.2:Modify other people’ salary.

1.和上一个任务相同,可以在修改信息的后面添加上条件,修改其他地方的信息,将原有的条件使用 -- 注释掉。修改的信息如下:123',salary=1 where Name='boby' --

2.在后端数据库查询Boby的薪资,发现已经成功修改。

3.3:Modify other people’ password

1.因为密码在数据库中是以哈希值的形式存储的。所以我们在对数据库中的密码进行修改操作时,也需要存入我们想要修改的密码的哈希值。我们可以借助哈希加密工具计算哈希值。将这个计算得出的哈希值修改到数据库中。

2.使用和之前的攻击相同的方法,将密码的哈希值通过这种方法进行修改,并且指定被修改的位置。使用的信息如下:

123',password='bf4d80d106e0b9a6d1d33ccb388fa996fbb123bf' where Name='boby' --

3.后端查询Boby的密码,可以看到密码已经被成功修改。

4.前端使用我们设置的密码登录Boby的账户,已经可以成功登录。

Task4:Countermeasure — Prepared Statement

1.参考实验指导对unsafe_home.php进行如下修改。

2.将修改后的文件另存为safe_home.php,然后对index.html中的连接修改为safe_home.php。

3.重新启动docker,使用账号密码登录,可以看到,修改已经生效。

4.使用之前的攻击方法对Boby的账户进行攻击

5.观察结果,发现已经无法攻击,之前的攻击已经不生效了。

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值