sql写shell原理

本文详细描述了如何在特定环境下利用Sqlmap工具在Web应用中创建shell脚本,包括满足的条件(知晓路径、可写权限、魔术引号关闭),验证过程以及文件上传机制。作者还探讨了文件内容编码的巧妙之处和日志记录的不解之谜。
摘要由CSDN通过智能技术生成


前言

本篇文章属于自己验证,如有错误之处,请大佬指正。
如需转载请注明

一、环境介绍

本次验证涉及的工具有:
1 Sqlmap 版本为1.7.2 
2 Phpstudy 版本为8.1.1.3(Apache+Php(5.4)+Mysql(5.7))
3 Burpsuite 2021专业版
4 Notedpad++
5 Navicat 
6 中国蚁剑
7 靶场环境为Pikachu 
工具都是常见工具,如需要请网上自行下载

二、原理简介

1.Sqlmap写shell条件

1. 知晓网站的绝对路径
原因是因为在指定--os-shell参数时,期间会让你输入要写入木马的web路径,不然
蚁剑如何连接
获取方式有:(1)网页报错信息 (2)phpinfo等探针信息 (3)猜测常见web目录
2. 对web目录有可写权限
即secure_file_priv = ''配置为空 
原因是--os-shell参数写入shell使用的是select xx into outfile而secure_file_priv此配置
控制着是否允许通过 LOAD DATA INFILE 和 SELECT ... INTO OUTFILE 等方式来
读取或写入本地文件。如果为NULL则不允许,为空允许,但是默认情况是一个路径
表示对此路径有读写权限
3. 魔术引号关闭
原因是因为防止路径被魔术引号转义,导入sql语句执行失败 但魔术引号在php稍高版本
被弃用

2.Sqlmap写shell过程简介

在上述条件满足后,执行Sqlmap,设置对应的语言、web目录,Sqlmap会通过outfile函数
将在指定目录生成两个php文件,一个文件用于文件上传,一个文件用于接受命令参数执行系统命令

三、验证过程

1.验证准备

(1)访问靶场漏洞页面,通过Burp抓取应用层数据包,并将请求包保存为txt文件
在这里插入图片描述
右击拦截包选择复制到文件即可

(2)开启Mysql的访问日志,主要用于验证Sqlmap的请求
默认情况Phpstudy没有开启日志记录,需要打开配置文件添加后重启相关服务
在这里插入图片描述
重启后在目录生成了mysql.log,此时并没有访问,因此可以看见是没有记录的
在这里插入图片描述

2.验证

在Sqlmap目录打开命令行并启动
由于是测试,知晓有漏洞就直接使用–os-shell了
sqlosshell.txt为burp保存的数据包

启动命令:python3 sqlmap.py -r sqloshell.txt --os-shell

运行后跑出了相关注入点及其它信息
在这里插入图片描述
根据要求选择后获取到os-shell
在这里插入图片描述
执行Ipconfig后获取回显
在这里插入图片描述
此时打开网站根目录发现多了两个php文件
在这里插入图片描述
查看后文件内容如下
大致功能就是上述提到的,一个文件用于文件上传、一个用于接受参数执行系统命令
在这里插入图片描述
此时你可能有疑惑这两个文件怎么来的?
此时我们找到刚才开启日志记录的文件,这个文件记录了所做的查询等操作,你会发现这样的数据
在这里插入图片描述
其中的十六进制解码就是上述文件中上传文件的源码
由于我不是很会Sql语句就很好奇为什么会将内容写入到文件,于是搜索了 LINES TERMINATED BY的用法,其作用是用于指定分隔符,
对你没看错,把所有的php代码进行十六进制转换然后当作了分隔符,因此上述文件的查询结果和php代码是连接在一起的,此处还是有
点巧妙之处。
访问上传页面上传shell,也可以用蚁剑连接
在这里插入图片描述

总结

此处有个奇怪的点是上传的命令执行文件我并没有在mysql日志中找到记录,猜测是通过有上传功能的那个php文件上传的,因为access.log中有访问记录,但由于是POST提交只记录了请求行,并没有请求内容。如果有大佬知晓,麻烦告知一二。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值