打开题目
我们看到题目说cookie值admin等于1时,才能包含文件
bp修改一下得到
访问rasalghul.php,得到
题目说如果我们get传入一个url且不为空值,就将我们get姿势传入的url的值赋值给ip
然后用正则过滤了 / /,如果ip的值没有 / /符号,则用shell_exec函数来执行变量ip中的命令,并输出结果
那我们直接读取flag
?url=cat flag
题目应该是过滤了空格
那我们就要想一下怎么绕过空格
我们想到用IFS
可能flag也被过滤了
知识点:
-
绕过空格的方法有
注释符/**/绕过
非断开空格%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 执行命令并以字符串形式返回完整输出