命令执行 [SWPUCTF 2021 新生赛]babyrce

打开题目

命令执行 [SWPUCTF 2021 新生赛]babyrce_第1张图片

我们看到题目说cookie值admin等于1时,才能包含文件

bp修改一下得到

命令执行 [SWPUCTF 2021 新生赛]babyrce_第2张图片

访问rasalghul.php,得到

命令执行 [SWPUCTF 2021 新生赛]babyrce_第3张图片

题目说如果我们get传入一个url且不为空值,就将我们get姿势传入的url的值赋值给ip

然后用正则过滤了 /  /,如果ip的值没有 /  /符号,则用shell_exec函数来执行变量ip中的命令,并输出结果

那我们直接读取flag

?url=cat flag

命令执行 [SWPUCTF 2021 新生赛]babyrce_第4张图片

题目应该是过滤了空格

那我们就要想一下怎么绕过空格

我们想到用IFS

命令执行 [SWPUCTF 2021 新生赛]babyrce_第5张图片

可能flag也被过滤了

命令执行 [SWPUCTF 2021 新生赛]babyrce_第6张图片

知识点:

  • 绕过空格的方法有
注释符/**/绕过
非断开空格%a0

(非断开空格是一种特殊的空格字符,与常规空格不同,它在文本中不会引起换行或断开。在URL编码中,非断开空格通常被表示为 %a0。)

括号绕过空格 

(如果空格被过滤,括号没有被过滤,可以用括号绕过。在MySQL中,括号是用来包围子查询的。任何可以计算出结果的语句,都可以用括号包围起来。而括号两端,可以没有多余的空格)

例如:select(table_name)from(information_schema.tables)where(table_schema)='数据库名'

双写绕过空格
%20绕过空格

linux下绕过空格的方法
$IFS
${IFS}
$IFS$1 //$1改成$加其他数字貌似都行
<
<>
{cat,flag.php}  //用逗号实现了空格功能
%20
%09
  • shell_exec() 函数

shell_exec() 函数是 PHP 中的一个内置函数,用于通过 shell 执行命令并以字符串形式返回完整输出

你可能感兴趣的:(安全)