命令执行

web29

<?php

/*
# -*- coding: utf-8 -*-
# @Author: h1xa
# @Date:   2020-09-04 00:12:34
# @Last Modified by:   h1xa
# @Last Modified time: 2020-09-04 00:42:26
# @email: h1xa@ctfer.com
# @link: https://ctfer.com

*/

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}

用''绕过过滤

或者直接再起一个变量绕过关键词过滤:

web30

用''绕过过滤

或者同上,老套娃了。

web31

同上题

还看到了很多奇怪的姿势:

web32

过滤了单引号和系统调用函数,之前用的方法就不能用了,用了php伪协议读取文件。

第一次知道eval()可以includefile,长知识,使用?>代替分号。

web33-36

题目

命令执行,需要经过严格的过滤。

解决方案

过滤双引号,前面的exp去掉双引号就行。

web37

一看就感觉是转base64读取代码

感觉这几题都是文件包含的知识点。

Last updated