头歌-信息安全技术-实训04 数据库SQL注入漏洞

头歌-信息安全技术-实训04 数据库SQL注入漏洞

第一关:获取dvwa环境

任务描述

搭建dvwa环境,包括1、搭建LAMP服务;2、部署dvwa服务;3、访问dvwa主页。

实验步骤

1、 安装appach

首先更新源

apt update

安装apache2

apt install apache2 -y

启动apache2

service apache2 start

查看apache2服务是否运行

netstat -antp | grep apache2

在这里插入图片描述

2、安装php

更新源,安装php

apt install php -y

安装常用模块

apt install php-pear php-fpm php-dev php-zip php-curl php-xmlrpc php-gd php-mysql php-mbstring php-xml libapache2-mod-php

3、修改apache配置文件

$ sudo vim /etc/php/7.0/apache2/php.ini
#allow_url_include = Off
allow_url_include = On     # 设置为On

在这里插入图片描述

4、安装mysql

安装mysql

apt install mysql-server -y

启动mysql服务

service mysql start

测试数据库是否安装成功,使用root登录数据库。由于是root权限不需要密码

mysql -u root

在这里插入图片描述
mysql安全配置初始化

mysql_secure_installation

Y为root用户添加密码插件
在这里插入图片描述
方便实验选择密码强度0
在这里插入图片描述
输入密码dvwa123456
在这里插入图片描述
移除匿名用户
在这里插入图片描述
禁止root远程登录
在这里插入图片描述
移除test数据库
在这里插入图片描述
刷新权限表
在这里插入图片描述
为dvwa创建数据库

create database dvwa;

在这里插入图片描述

5、安装dvwa

切换到/var/www/html目录并下载dvwa

git clone https://github.com/digininja/DVWA.git

修改配置文件

$ cd /var/www/html/DVWA/config
$ cp config.inc.php.dist config.inc.php
$ vim config.inc.php
$_DVWA[ 'db_user' ]     = 'root';
$_DVWA[ 'db_password' ] = 'dvwa123456';
$_DVWA[ 'recaptcha_public_key' ] = '6LdJJlUUAAAAAH1Q6cTpZRQ2Ah8VpyzhnffD0mBb';
$_DVWA[ 'recaptcha_private_key' ] = '6LdJJlUUAAAAAM2a3HrgzLczqdYp4g05EqDs-W4K';

在这里插入图片描述
给文件夹赋予权限

$ sudo chmod 777 -R /var/www/html/DVWA/hackable/uploads/
$ sudo chmod 777 /var/www/html/DVWA/external/phpids/0.6/lib/IDS/tmp/phpids_log.txt
$ sudo chmod 777 -R  /var/www/html/DVWA/config

访问127.0.0.1/DVWA/setup.php,点击Create/Reset Database
在这里插入图片描述
成功之后会自动跳转到登录界面用户名为admin,密码为password
在这里插入图片描述

第二关:获取数据库名称、账户名、版本及操作系统信息

任务描述

在上一章的基础上判断是否存在SQL注入漏洞。

  • 注意:如果本节实验无法进行,请按照第一关方法配置LAMP和DVWA
  • 注意:如果本节实验无法进行,请按照第一关方法配置LAMP和DVWA
  • 注意:如果本节实验无法进行,请按照第一关方法配置LAMP和DVWA

实验步骤

1、sql实践

登录dvwa平台,用户名为"admin",密码为"password",并访问127.0.0.1/DVWA/security.php,设置安全等级为low
在这里插入图片描述

2 、在id处输入1‘ and 1=2 union selelct user(),database() #,就可以看到用户名和数据库名啦,用户名:root@localhost,数据库:dvwa

在这里插入图片描述

3、使用sql注入查询数据库用户名和数据库名,并将用户名和数据库名写入/data/workspace/myshixun/result2中,回到终端,输入vim /data/workspace/myshixun/result2回车

在这里插入图片描述

4、按i键插入数据,写入root@localhost dvwa,按Esc键,输入:wq,回车,就可以直接评测啦!

在这里插入图片描述

第三关:获取数据库表名、列名

1、任务描述

在上一章的基础上获取数据库表名、列名。

  • 注意:如果本节实验无法进行,请按照第一关方法配置LAMP和DVWA
  • 注意:如果本节实验无法进行,请按照第一关方法配置LAMP和DVWA
  • 注意:如果本节实验无法进行,请按照第一关方法配置LAMP和DVWA

2、实验步骤

1、使用sql注入查询dvwa数据库的所有表名,并将所有表名写入/data/workspace/myshixun/result3中,在终端输入vim /data/workspace/myshixun/result3,回车

在这里插入图片描述

2、按i键插入数据,写入guestbook users,按Esc键,输入:wq,回车,就可以直接评测啦!

在这里插入图片描述

第四关:获取用户名密码,并猜测root用户

1、任务描述

在上一章的基础上获取用户名密码并猜测root用户。

  • 注意:如果本节实验无法进行,请按照第一关方法配置LAMP和DVWA
  • 注意:如果本节实验无法进行,请按照第一关方法配置LAMP和DVWA
  • 注意:如果本节实验无法进行,请按照第一关方法配置LAMP和DVWA

2、实验步骤

1、使用sql注入查询dvwa数据库的所有表名,并将所有表名写入/data/workspace/myshixun/result4中,在终端输入vim /data/workspace/myshixun/result4,回车

在这里插入图片描述

2、按i键插入数据,写入password,按Esc键,输入:wq,回车,就可以直接评测啦!

在这里插入图片描述

  • 11
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
### 回答1: SQL手工注入漏洞测试通常是通过构造恶意输入来测试数据库系统的安全性,以检测可能存在的漏洞。在针对MySQL数据库的字符型注入测试中,攻击者会尝试利用输入表单中的字符型数据来破坏SQL语句的可靠性,进而获取对数据库的访问权限。 攻击者通常会使用一些SQL注入工具,例如SQLMap、Havij等,通过模拟输入表单来测试Web应用程序是否存在SQL注入漏洞。在手动测试的过程中,攻击者需要了解目标系统中数据库的结构和使用的语言,并通过逐步构造恶意输入数据来尝试绕过系统的安全验证和防火墙,以获取对数据库的访问权限。 为避免SQL注入漏洞的产生,建议采用安全性更高的编程语言和框架,例如使用预处理语句、输入验证和过滤技术,同时定期对Web应用程序进行漏洞扫描和安全性检测,以降低数据库被攻击的风险。 ### 回答2: SQL注入是一种利用网站未正确过滤或验证用户输入数据的漏洞,通过构造一些特殊的SQL查询语句,来实现绕过网站的权限控制或者直接在数据库上执行一些恶意操作的攻击技术。SQL注入漏洞是常见的Web安全问题之一,并且MySQL是被广泛使用的数据库之一,因此测试MySQL数据库的手工注入漏洞测试也是非常必要的。 手工注入漏洞测试有多种方法,最常见的是利用逻辑性错误和SQL语句字符转义的脆弱性来构造恶意的SQL查询语句。首先,我们可以查找网站的URL参数和表单输入框,尝试在这些输入框中输入一些特殊字符(例如单引号,双引号和分号),看看是否能够返回一些不同寻常的错误信息。如果页面返回了一些SQL错误信息,那么很有可能存在SQL注入漏洞。 接下来的一步是手动构造SQL查询语句,注入恶意的代码。一般来说,SQL注入漏洞的主要攻击方法是利用SELECT,UPDATE,DELETE和INSERT等操作语句。我们可以在URL参数或表单输入框中输入如下代码片段,来测试是否存在漏洞: 1. SELECT * FROM users WHERE username='admin' AND password='' OR '1'='1'; 2. SELECT * FROM users WHERE username='admin' AND password='' UNION ALL SELECT 1,2,3; 3. SELECT * FROM users WHERE username='admin' OR 1=1# AND password=''; 上述代码分别用于测试逻辑性错误漏洞、UNION注入和基于SQL注释的漏洞。如果我们能够成功执行这些恶意代码,那么就说明存在SQL注入漏洞,攻击者可以使用类似的代码片段来执行任意的SQL查询。 为了防止SQL注入漏洞,可以采取以下措施: 1. 输入过滤:检查输入数据是否包含恶意代码和SQL语句特殊字符,并过滤或转义掉这些字符。 2. 预编译语句:使用PreparedStatement或其他预编译语句可以避免SQL语句被拼凑,从而避免SQL注入漏洞。 3. 限制查询权限:限制数据库用户的查询权限,并使用最小特权原则。 总之,在进行MySQL数据库的手工注入漏洞测试时,需要充分理解SQL注入漏洞的原理和漏洞类型,并采取适当的防护措施来保护Web应用程序的安全性。 ### 回答3: SQL注入漏洞是常见的网络安全漏洞之一,而SQL手工注入漏洞测试是一种检测和验证SQL注入漏洞的方法。在Mysql数据库字符型注入漏洞测试中,我们需要先准备好一台虚拟机或者真实主机,然后搭建好LAMP或者LEMP环境,以便进行后续的测试。 1. 测试目标 首先确定我们要测试的目标,这可以是一个网站,或者是一个具有数据库功能的应用程序。我们需要了解和分析目标,找到目标系统的漏洞点,才能有针对性地进行注入漏洞测试。 2. 确认注入点 找到目标系统的漏洞点后,我们需要确认注入点,这就是通过输入特定的字符序列来判断系统是否存在SQL注入漏洞。在Mysql数据库字符型注入漏洞测试中,我们可以使用’和”这两个字符进行测试来确定注入点。 例如:我们可以输入以下字符序列来测试系统是否存在SQL注入漏洞:“'or 1=1#”,如果直接返回了数据,则说明该系统存在SQL注入漏洞。 3. 确认数据库类型和版本 在进行注入漏洞测试之前,我们需要知道目标系统所使用的数据库类型和版本。在Mysql数据库字符型注入漏洞测试中,我们可以通过以下语句来确定数据库版本: select version(); 4. 利用SQL语句注入漏洞 当我们成功确认时,就可以利用SQL语句进行注入漏洞测试了,具体的方法如下: a. 使用union查询合并数据:可以输入以下字符序列来进行测试:‘+union+select+1,2,3#',如果成功,则系统会返回一个由“1,2,3”组成的数据集。 b. 使用group by控制查询结果:可以输入以下字符序列来进行测试:‘+union+select+1,count(*)+from+table_name+group+by+1#',如果成功,则系统会返回各个数据组的数量。 c. 使用order by控制查询结果排序:可以输入以下字符序列来进行测试:‘+union+select+1,2+from+table_name+order+by+3#',如果成功,则系统会返回具有排序的数据集。 5. 总结 以上就是Mysql数据库字符型注入漏洞测试的基本步骤和方法。当然,注入漏洞测试是一项繁琐的工作,需要有一定的技术水平和丰富的经验。在进行注入漏洞测试之前,一定要保证进行充分的备份和风险评估,以防止对目标系统造成不可逆转的损失。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不服输的小乌龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值