您的位置:首页 > 游戏 > 游戏 > 手表官方网_南京网站建设案例_今日中国新闻_百度推广怎么收费

手表官方网_南京网站建设案例_今日中国新闻_百度推广怎么收费

2025/7/12 17:53:23 来源:https://blog.csdn.net/qq_50332504/article/details/147070728  浏览:    关键词:手表官方网_南京网站建设案例_今日中国新闻_百度推广怎么收费
手表官方网_南京网站建设案例_今日中国新闻_百度推广怎么收费

前置知识

eval: 把字符串按照 PHP 代码来执行,例如eval(“echo 1;”);这个函数拥有回显
system:使php程序执行系统命令,例如,system(“ls”);就是查看当前目录,这个拥有回显
preg_match:查找字符串是否匹配一个正则表达式。参数1是正则表达式,参数2是字符串,其他可选参数请自行学习

linux基础命令:

  • ls:展示当前目录下的所有文件
  • cat:输出当前文件的所有内容
  • tac:从最后一行开始逐行向上遍历输出当前文件的所有内容

信息收集

这里学习php不是一蹴而就的,我刚开始学习的时候也是直接搭建了php的网站,把题目复制到本地,然后自己调试,以此来学习php的函数。我希望读者也能如我一样有一个自己的php网站,用于学习这些php函数代码。

这里的preg_match("/flag/i", $c)表示变量$c是否存在flag这个子字符串,最后的/表示需要遵循的匹配规则,i是大小写忽略
所以这句代码的意思是,$c里是否有flag,大小写忽略,例如fLAg也能正确匹配
而取反后,我们的提交的参数c不能包含flag字样
在这里插入图片描述

解题

这里仅提供一些解题的思路,起到抛砖引玉的作用,我不可能列举出所有的方法,想到啥就写啥了。

这里我们使用system(“ls”);查看当前目录,是否存在我们想要的flag
在这里插入图片描述

方法1

接下来,我们本应该system("cat flag.php"); 即可,但flag被过滤了,我们的输入中有flag就不会执行eval。想要绕过flag非常简单,只需要tac fla*就可以了

为什么不用cat而是tac呢,因为cat获取了完整的php内容,包括<?php ... ?>和注释,这会被eval()当做代码解析,这不是我们希望看到的,我们希望获得的就是php的源码。
在这里插入图片描述

方法2

c=system("cp fla* a.txt");
将flag.php复制到a.txt
在这里插入图片描述

方法3

我们可以给system传变量,这样$c里没有flag,而我们在其他变量里传入flag.php就能完美绕过它的限制
在这里插入图片描述

web28    目录    web30

版权声明:

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

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