sqlmap基本使用

  • GET型
  • 基础参数
  • 获取数据库信息
  • POST型
  • 基础参数
  • 使用技巧


GET型

基础参数

GET类型的sql注入,需要用到的sqlmap参数为 -u

基本格式:
sqlmap + -u + url + 其他参数

每一个参数都需要用空格分开
简单GET型常用参数

参数

介绍

-o

开启所有优化开关

-batch

出现的选项全部默认选是

-dbms

表示该网站使用了什么类型的数据库,后需要接数据库类型。例:-dbms mysql

-level

执行测试的等级(1-5,默认等级为1)检测数据库,级别越高检测越全面,等级至少为2才能检测cookie类型的sql注入。例:-level 1

-risk

执行测试的风险(0-3,默认为1)例:-risk 1

-v

详细级别(0-6,默认1)想了解下注入的内容可以开启这个参数,他可以让我们看到详细的注入内容和过程。例:-v 6

–threads

可以自定义线程加速,(0-10,默认1)例:-threads 10或 -thread=10

-techniques

指定sql注入手段有五个选择,B:bool类型;E:Error类型;U:联合查询;S:stacked queries (要对目标系统进行文件操作,操作系统,注册表操作,必须指定S);T:时间检测。可以多个一起使用例:-techniques BEUST

获取数据库信息

查询有哪些数据库
sqlmap -u “url?id=1” 需要添加的参数 –dbs

查询test数据库中有哪些表
sqlmap -u “url?id=1” 需要添加的参数 -D (想要查询的数据库) –tables

查询某个数据库中某个表有哪些字段
sqlmap -u “url?id=1” 需要添加的参数 -D (想要查询的数据库) -T (想要查询的数据表) –columns

查询某个数据库中某个表中的具体数据
sqlmap -u “url?id=1” 需要添加的参数 -D (想要查询的数据库) -T (想要查询的数据表) -C (想要查询的字段名) -dbump

一般情况下除了参数-techniques和-dbms其他参数都可以随意添加下去或者说都需要添加下去。-techniques需要清楚对方可以使用-techniques包含了的五个注入手段之中的某一个或某些的时候可以使用,或者是想要试试运气。-dbms需要清楚对方使用的数据库为哪一种数据库(sqlmap支持的数据库:MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB),如果想要试试运气也可以。

POST型

基础参数

POST类型的sql注入,需要用到的sqlmap参数为 -r
这种类型的sqlmap使用则需要配合burp使用burpsuite等工具抓取post包将数据保存为一个txt文档。

基本格式:
sqlmap + -r + 存放数据包的txt文档文件名 + 其他参数

前面提到的参数到这里也还是可以使用的,只是增加几个不一样的参数

参数

介绍

-cookie

当出现cookie注入是可以使用该参数,例:-cookie=“cookie的内容”

-tamper

当对方进行了编码时可以使用该函数,将我们的值进行编码后的SQL注入。这个参数可以使用sqlmap自带的编码脚本,也可以使用自己的编码脚本。

使用技巧

当我们明白是哪个地方存在SQL注入时,我们可以用burpsuite抓取数据包之后将他的值改为 .* 这样sqlmap会对他进行优先注入提高成功率。

例:sqli-labs第18题

因为sqli使用的数据库内容相同,使用之前得到的账户密码进行登录,登录成功后得到提示 发现User-Agent可能存在注入,我们可以先对他优先注入。

sqlmap 连接mysql 命令 sqlmap -u_sql


使用burpsuite抓取数据包后将User-Agent部分的内容替换成.*

sqlmap 连接mysql 命令 sqlmap -u_mysql_02


之后进行注入。

sqlmap -r less018.txt -o --batch --dbms mysql --level 5 --risk 3 --thread=10 --dbms mysql -v 6 -D security -T users -columns

sqlmap 连接mysql 命令 sqlmap -u_sqlmap 连接mysql 命令_03


很快速的得到对方数据库中的数据。

例:sqli-labs第19题

19题是Referer存在sql注入,我们可以使用和18题一样的注入方式,但是不能将他全部内容进行替换,而是将*加到url之后。

sqlmap 连接mysql 命令 sqlmap -u_sql注入_04

sqlmap -r less19.txt -o --batch --dbms mysql --level 5 --risk 3 --thread=10 --dbms mysql -v 6 -D security -T users -columns

将* 放在url之后是为了将sql注入语句放在url之后进行注入。如果将Referer的内容换成*,对方服务器将无法识别。

sqlmap 连接mysql 命令 sqlmap -u_sqlmap 连接mysql 命令_05