sqlmap (--os-shell)的使用

本文介绍了如何在phpstudy环境中通过sqlmap工具进行字符型SQL注入攻击,利用pikachu靶场实现路径公开和反弹shell,以及后续的权限查看过程。

sqlmap (–os-shell)的使用

实验前的环境准备:

  1. 搭建phpstudy环境及pikachu靶场
  2. 保证kali可以正常访问pikachu靶场

使用kali访问pikachu靶场

以字符型注入(get)为例,随便输入一些信息,点击“查询”

在这里插入图片描述

使用sqlmap注入

python sqlmap.py -u "http://192.168.1.139/pikachu/vul/sqli/sqli_str.php?name=1&submit=%E6%9F%A5%E8%AF%A2" --os-shell

在这里插入图片描述

可以尝试的注入方式

在这里插入图片描述

选择语言 4

在这里插入图片描述

您是否希望sqlmap进一步尝试激发完整的路径公开 Y
输入pikachu靶场的绝对路径 2(自定义路径)在这里插入图片描述
选择路径的四个选项解析

在这里插入图片描述

成功反弹shell

在这里插入图片描述

查看权限
whoami

在这里插入图片描述

查看ip

图片转存中...(img-0whRP1Qq-1704088411824)]

### 关于 `sqlmap` 使用 `--os-shell` 参数的教程 #### 工具概述 `sqlmap` 是一款功能强大的自动化 SQL 注入渗透测试工具,能够检测并利用多种类型的 SQL 注入漏洞。除了基本的数据提取外,它还支持高级操作,比如通过 `--os-shell` 获取目标系统的命令执行权限。 --- #### `-d` 和 `--os-shell` 参数详解 1. **`-d` 参数的作用** `-d` 参数允许用户直接指定一个已经保存的目标配置文件路径或数据库连接字符串来启动扫描过程。这可以简化重复输入相同参数的过程[^1]。 2. **`--os-shell` 参数的功能** 当存在高危 SQL 注入漏洞时,`sqlmap` 能够尝试提升权限至操作系统层面,并提供交互式的 Shell 接口供攻击者使用。此接口可用于运行任意系统命令,前提是满足以下条件: - 数据库用户的权限足够高(通常是 root 或具有管理员权限)。 - 目标环境支持特定的操作模式(如堆栈调整、UDF 加载等)。[^3] --- #### 实际案例分析 以下是几个实际使用的场景及其对应的命令: 1. **基于请求文件的方式** 如果已有一个包含 HTTP 请求包的 `.txt` 文件,则可以通过如下方式调用 `sqlmap` 并启用 `--os-shell` 功能: ```bash python sqlmap.py -r /path/to/request.txt --dbms=mysql --os-shell ``` 这里 `-r` 表示读取请求文件的内容作为输入源;`--dbms=mysql` 明确指定了目标数据库类型为 MySQL[^2]。 2. **基于 URL 的方式** 若知道具体的注入点 URL 地址,可以直接将其传递给程序: ```bash sqlmap -u "http://example.com/vuln?id=1" --is-dba --os-shell ``` 上述例子中,`--is-dba` 用来验证当前登录账户是否具备 DBA 权限,这是成功开启 OS Shell 的前提之一。 3. **结合其他选项增强效果** 对某些复杂情况可能还需要额外设置一些辅助开关,例如绕过 WAF 防护机制或者优化性能表现等等。下面展示了一个综合运用多个参数的例子: ```bash sqlmap -u "http://target.site/page.php?param=value" \ --random-agent \ --level=5 \ --risk=3 \ --technique=BETUQ \ --os-shell ``` --- #### 技术原理剖析 当触发 `--os-shell` 后,`sqlmap` 内部会经历以下几个阶段完成最终目的: 1. 自动探测适合的方法实现远程代码执行; 2. 构建临时存储空间存放必要的脚本组件; 3. 利用这些资源加载自定义函数到内存当中去; 4. 提供给前端图形化界面让用户自由下达各种指令直至结束整个流程为止[^4]。 需要注意的是,在真实环境中应用此类技术务必获得合法授权以免触犯法律! --- ```python import os command = input("Enter your command: ") result = os.popen(command).read() print(result) ``` 上述 Python 小片段展示了如何简单地接收用户输入并在本地终端上回显结果,类似于 `sqlmap` 执行后的行为模拟版本。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值