例如:python sqlmap.py -r D:\user.txt --tables
6、-D
用来指定数据库,如果不加该参数, sqlmap 将枚举所有 DBMS 数据库的表
例如:python sqlmap.py -r D:\user.txt -D test --tables
7、–columns
如果当前会话用户对数据库系统表有读取权限,则可以枚举出当前数据库表的列名
例如:python sqlmap.py -r D:\user.txt --columns -D testdb -T users -C name
8、-D
用来指定数据库名称
例如:python sqlmap.py -r D:\user.txt --columns -D testdb -T users -C name
9、-T
用来指定数据库表名
例如:python sqlmap.py -r D:\user.txt --columns -D testdb -T users -C name
10、-C
用来指定要枚举的数据库表的列名称
例如:python sqlmap.py -r D:\user.txt --columns -D testdb -T users -C name
11、–fresh-queries
使用这个参数sqlmap将不会从缓存里面加载数据,从而能将最新的数据注入到数据库
例如:python sqlmap.py -r D:\user.txt --dbs --fresh-queries
12、–level
如果 SQL 注入检测的难度越高,则需要设定越高的–level 值,最高级别是5
**例如:**python sqlmap.py -r D:\user.txt --level=5 --risk=3
13、–risk
风险级别,默认级别是1,风险级别是2时,会在默认的基础上添加大量的时间型盲注语句进行测试,风险级别是3时,会在原基础上添加大量OR类型的布尔型盲注语句进行测试
例如:python sqlmap.py -r D:\user.txt --level=5 --risk=3
这个命令,执行时间会比较久
四、sqlmap实践应用
一)通过工具AppScan扫描SQL盲注漏洞
查看AppScan工具的扫描结果,看是否有SQL盲注漏洞,如果存在,就会有如下图所示的标注
二)分析存在SQL盲注的接口
注入的接口一般分为POST注入和GET注入,两种类型的接口使用工具的方式不一样。
1、POST注入
1)如果接口是POST类型的,就需要把AppScan上该接口的请求信息(请求头+请求体),全部复制到一个txt文件下保存,放到一个本地文件下,例如D:\saler.txt
2)手动登录系统,将D:\saler.txt文件的Cookie值更新为最新值
复制最新的Cookie值
粘贴至D:\saler.txt文件中
3)打开cmd窗口,通过桌面快捷方式进入sqlmap所在目录,执行命令:python sqlmap.py -r D:\user.txt --dbs
命令的格式为:python sqlmap.py -r 请求报文txt文件所在目录位置 --dbs
4)命令执行完成后,分析结果
如果有注入,结果如下(因为我们演示的时候,执行命令的参数是–dbs,所以暴露的是数据库名):
5)将SQL盲注的漏洞反馈给开发同学,让开发同学修复
参考AppScan扫描时的参数,利用抓包工具例如Fiddler或者Charles进行重现
尝试传这四个参数,验证结果是不是不同,如果不一样,则证明存在SQL盲注漏洞
6)待开发修复漏洞后,进行验证
注意验证的时候清除缓存,带–fresh-queries参数,该参数表示sqlmap将不会从缓存里面加载数据,从而能注入到数据库最新的数据
3分钟左右,脚本跑完后,查看结果,如下是已修复的结果
2、GET注入
*1)*打开cmd窗口,通过桌面快捷方式进入sqlmap所在目录,执行命令:python sqlmap.py -u “https://xxxx/saler/list?customerId=2” --dbs
命令的格式为:python sqlmap.py -u “接口地址” --dbs
2)命令执行完成后,分析结果
如果有注入,结果如下:
如果没有注入,结果如下:
3)将SQL盲注的漏洞反馈给开发同学,让开发同学修复
参考POST注入的方式,GET注入重现也可以不抓包,直接手动登录系统,在浏览器中访问接口地址即可
4)待开发修复漏洞后,进行验证
注意验证的时候清除缓存,带–fresh-queries参数,该参数表示sqlmap将不会从缓存里面加载数据,从而能注入到数据库最新的数据
请参考POST注入的方式
写在最后
在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。
需要完整版PDF学习资源私我
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!