[原题复现]ByteCTF 2019 –WEB- Boring-Code[无参数rce、绕过filter_var(),等]

 简介

 原题复现:

 考察知识点:无参数命令执行、绕过filter_var(), preg_match()

 线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到此题

 环境复现

目录

www/flag  flag文件
www/code/code.php

代码

 1 <?php
 2 function is_valid_url($url) {
 3     //FILTER_VALIDATE_URL 过滤器把值作为 URL 进行验证。
 4     if (filter_var($url, FILTER_VALIDATE_URL)) {
 5         if (preg_match('/data:\/\//i', $url)) {
 6             return false;
 7         }
 8         return true;
 9     }
10     return false;
11 }
12 
13 
14 if (isset($_POST['url'])){
15     $url = $_POST['url'];
16     if (is_valid_url($url)) {
17         $r = parse_url($url);
18         var_dump($r);
19         if (preg_match('/baidu\.com$/', $r['host'])) {
20             $code = file_get_contents($url);
21             var_dump($code);
22             if (';' === preg_replace('/[a-z]+\((?R)?\)/', NULL, $code)) {
23                 if (preg_match('/et|na|nt|strlen|info|path|rand|dec|bin|hex|oct|pi|exp|log/i', $code)) {
24                     echo 'bye~';
25                 } else {
26                     eval($code);
27                 }
28             }
29         } else {
30             echo "error: host not allowed";
31         }
32     } else {
33         echo "error: invalid url";
34     }
35 }else{
36     highlight_file(__FILE__);
37 }
View Code

 审计分析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值