RIPS --代码审计靶场(第一关)
2020-12-09 11:03:23 Author: mp.weixin.qq.com(查看原文) 阅读量:65 收藏


靶场代码:

class Challenge {  const UPLOAD_DIRECTORY = './solutions/';  private $file;  private $whitelist;  public function __construct($file) {    $this->file = $file;    $this->whitelist = range(1, 24);    //生成包含1-24的数组  }  public function __destruct() {    if (in_array($this->file['name'], $this->whitelist)) {    //验证邮箱的名字但是并没有验证上传文件的文件类型      move_uploaded_file(        $this->file['tmp_name'],        self::UPLOAD_DIRECTORY . $this->file['name']      );    }  }}$challenge = new Challenge($_FILES['solution']);

该代码在第10行中包含一个任意文件上传漏洞。in_array()在第10行中使用该操作 来检查文件名是否为数字。但是,它是类型不安全的,因为第三个参数未设置为“ true”。因此,PHP将文件名与数组$ whitelist进行比较时,将尝试将文件名强制转换为整数值(第7行)。结果,可以通过在文件名之前添加介于1和24之间的值来绕过白名单,例如“ 5xxx.php”。然后,上传的PHP文件将导致在Web服务器上执行代码。

推荐文章++++

*记一次糟心的内网靶场实战

*Docker简单搭建Vulfocus靶场

*一次简单的内网渗透靶场练习


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMjE3ODU3MQ==&mid=2650495448&idx=3&sn=725afd903af3f502225e4784c4e6a60e&chksm=83ba3c3cb4cdb52a255479a5765e41af179c0a5e3beebed670bdb8c69d5ace295b5f1dfb6a38#rd
如有侵权请联系:admin#unsafe.sh